レール 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