Rails 2.3.5
下面,我有一个TicketMarket模型,管理员维护“市场”名称。该表通过关联表链接到票证表。
我需要为TicketMarket CRUD提供“validates_uniqueness_of”,但是如下所示,当有人创建故障单并检查故障单表单上的某些市场复选框时,它将导致验证错误。
我见过的Everythign说正确的做法是根据“ticket_market_associations”表的“ticket_id”字段确定验证范围:
validates_uniqueness_of :market_name, :case_sensitive => false, :scope => :ticket_id
然而,这不起作用。使用该范围后,使用TicketMarket CRUD会导致#TicketMarket的“未定义方法`ticket_id”:0x630bdf0“错误。
在这里做什么是正确的,所以只有在使用TicketMarket CRUD而不是Ticket 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