我有以下链接模型:
class Event
has_many :orders
has_many :tickets, through: :orders
end
class Order
belongs_to :event
has_many :tickets
end
class Ticket
belongs_to :order
? :event, ?: :order
validates :name, uniqueness: { scope: :event }
end
问题在于,无论我在上面的两个?
标记中填写什么,在验证我的Ticket模型的实例时会出现不同的错误。我试过的组合:
delegate
/ to
:这是最干净的解决方案。但是,在验证故障单时,会发生以下错误:no such column: tickets.event
has_one
/ through
:这实际上是不好的做法,因为这会在保存时触及事件模型。这里的错误是:undefined method 'event_id' for #<Ticket:0x0000010787c730>
乍一看,似乎是一种干净利落地检查单个活动的故障单上的名称是否唯一的方法。我错过了什么吗?这个问题有什么干净的解决方案吗?
提前致谢,
汤姆
答案 0 :(得分:0)
您不需要question mark line
。而是尝试将验证更改为
validates :name, uniqueness: true, scope: :event
您的故障单模型应始终belong_to :event
。下订单时,故障单应与事件和订单相关联。这意味着您需要将event_id:integer
添加到故障单模型中。