Ruby on rails Rails属于具有唯一性范围的直通解决方案

Ruby on rails Rails属于具有唯一性范围的直通解决方案,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我有以下链接模型: 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

我有以下链接模型:

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
问题是,无论我在上面的两个
标记中填写什么,我在验证我的票证模型实例时都会遇到不同的错误。我尝试过的组合:

  • /
    委托给
    :这是最干净的解决方案。但是,在验证票据时,会发生以下错误:
    没有此类列:tickets.event
  • 有一个
    /
    :这实际上是一种不好的做法,因为这会在保存时影响事件模型。这里的错误是:
    为#
乍一看,似乎没有一种方法可以清楚地检查单个事件的票证上的名称是否唯一。我错过什么了吗?这个问题有没有干净的解决办法

提前感谢,


汤姆

你不需要问号行。相反,尝试将验证更改为

验证:名称、唯一性:true、范围::事件

您的票证型号应始终
属于\u to:event
。下订单时,票据应与事件以及订单相关联。这意味着您需要将
事件\u id:integer
添加到您的票证模型中