我有一个有点古怪的情况。我不确定这是否是 Rails 错误(我使用的是 4.1.4 版(。也许,我需要升级我的版本。
本质上:
我的Event
模型具有以下关联:
has_many :attendees, -> { order(:name).select('users.*, user_events.event_title') },
through: :user_events,
source: :user
这样做的目的是让我参加活动的用户,并通过user_events
加入表,它也会让我获得他们的event_title
。
这适用于简单情况:event.attendees
但是,它会在以下方面出错:
Event.includes(:attendees).where.not(title: "wow")
问题基本上是user_events
没有添加到错误的命令中的 FROM 子句中。不过,它是在event.attendees
中添加的。
如何正确添加它?
我已经尝试过Event.includes(:attendees).joins(:user_events).where.not(title: "wow")
但它会增加错误的SQL调用user_events
。
我在这里得到的是,你需要那些标题不是上述查询"哇"的人?正确。 如果是这样,那么您应该在那里使用引用方法,因为 rails 不理解标题在"user_events"表上,因为您从 Event 中调用了它,您也可以这样写
Event.include(:attendees(.joins(:user_events(.where.not(user_events: {标题:"哇"}(