[英]How to validate jsonb array of objects in Rails?
我有一個名為Order
的模型,我想向其中添加一個名為status_updates
的新jsonb
列。 此列將包含以下格式的數據:
status_updates = [{ status: 'success', created_at: <timestamp> }, { status: 'processing', created_at: <timestamp> }]
我想驗證每個status_updates
元素的status
屬性是否為以下之一: success
, canceled
, processing
。 另外,我想驗證每個元素都有一個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
-您可能會或可能不需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.