以下工作正确,但似乎我可能没有在轨道中使用我应该使用的东西。工作位是:
MaxOffer.joins("JOIN items ON items.id = max_offers.item_id")
.order('amount_in_cents desc')
.where('items.id = 20')
.limit(5).collect do |moffer|
起初我假设我没有明确使用连接,因为模型是:
class MaxOffer < ActiveRecord::Base
belongs_to :item
belongs_to :user
class User < ActiveRecord::Base
has_many :bids
has_many :max_offers
但是当我尝试在where子句中使用item.id
时出现错误。有没有更合适的方法来做到这一点,或明确包括必要的连接?
答案 0 :(得分:1)
鉴于MaxOffer和Item之间的关系,这应该有效:
MaxOffer.joins(:item)
.where('items.id = ?', 20)
.order('amount_in_cents desc')
.limit(5).collect do |moffer|
我会运行它们并查看生成的sql以查看是否存在差异。