gpt4 book ai didi

ruby-on-rails - 如何验证 Rails 中的 jsonb 对象数组?

转载 作者:行者123 更新时间:2023-11-29 14:13:30 27 4
gpt4 key购买 nike

我有一个名为 Order 的模型,我想向其中添加一个名为 status_updates 的新 jsonb 列。此列将包含以下格式的数据:

status_updates = [{ status: 'success', created_at: <timestamp> }, { status: 'processing', created_at: <timestamp> }]

我想验证每个 status_updates 元素的 status 属性是否为以下之一:successcanceled处理。此外,我想验证每个元素都有一个 created_at 时间戳。

您将如何在 Rails 中做到这一点?是否可以对状态执行类似于 enum 的操作?

最佳答案

我想如果我是你,我可能会考虑创建一个 OrderStatus 模型,例如:

# == Schema Information
#
# Table name: order_statuses
#
# id :bigint not null, primary key
# status :integer default(0)
# order_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class OrderStatus < ApplicationRecord
belongs_to :order
validates :status,
presence: true,
inclusion: { in: 0..2 }

enum status: {
processing: 0,
success: 1,
cancelled: 2,
}

end

然后在 Order 中,执行如下操作:

class Order < ApplicationRecord
has_many :order_statuses
end

现在,每个 OrderStatus 记录都有一个 created_at 值(假设您的 OrderStatus 有效并已保存)。并且,status 将被验证为 enum 中的值之一。如所写,status 将默认为 processing - 您可能想要也可能不想要。

关于ruby-on-rails - 如何验证 Rails 中的 jsonb 对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57261392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com