4

レール 2.3.5

以下に、管理者が「市場」名を維持する TicketMarket モデルがあります。このテーブルは、関連付けテーブルを介してチケット テーブルにリンクされています。

TicketMarket CRUD の「validates_uniqueness_of」が必要ですが、以下のように、誰かがチケットを作成し、チケット フォームのいくつかのマーケット チェックボックスをオンにすると、検証エラーが発生します。

私が見たすべてのことは、「ticket_market_associations」テーブルの「ticket_id」フィールドに基づいて検証をスコープすることです。

validates_uniqueness_of :market_name, :case_sensitive => false, :scope => :ticket_id

しかし、それはうまくいきません。そのスコープを使用して、TicketMarket CRUD を操作すると、「#TicketMarket:0x630bdf0 の未定義メソッド `ticket_id'」エラーが発生します。

チケット CRUD ではなく、TicketMarket CRUD を操作する場合にのみ検証がオフになるように、ここで行うべき正しいことは何ですか?

ありがとう!

class TicketMarket < ActiveRecord::Base
  has_many :ticket_market_associations
  has_many :tickets, :through => :ticket_market_associations

  validates_presence_of :market_name
  validates_uniqueness_of :market_name, :case_sensitive => false
end
4

0 に答える 0