簡體   English   中英

如何在Rails中驗證對象的jsonb數組?

[英]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屬性是否為以下之一: successcanceledprocessing 另外,我想驗證每個元素都有一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM