是否有更“活跃的记录”正确编写此查询的方式?

时间:2012-05-16 15:59:50

标签: ruby-on-rails activerecord

以下工作正确,但似乎我可能没有在轨道中使用我应该使用的东西。工作位是:

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时出现错误。有没有更合适的方法来做到这一点,或明确包括必要的连接?

1 个答案:

答案 0 :(得分:1)

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

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

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