0

以下工作正常,但似乎我可能没有在我应该使用的rails中使用某些东西。工作位是:

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

但是当我尝试简单地item.id在 where 子句中使用时出现错误。有没有更合适的方法来做到这一点,或者明确包括加入是必要的?

4

1 回答 1

1

鉴于 MaxOffer 和 Item 之间的关系,这应该有效:

MaxOffer.joins(:item)
    .where('items.id = ?', 20)
    .order('amount_in_cents desc')
    .limit(5).collect do |moffer|

我会同时运行它们并查看生成的 sql 以查看是否存在差异。

于 2012-05-16T16:04:17.063 回答