Rails 3 ActiveRecord:通过查找模型的关联来查找模型

时间:2011-05-03 12:11:58

标签: ruby-on-rails activerecord associations

class OrderItem belongs_to Item and belongs_to Order

class Item has_many OrderItems and belongs_to ItemType

class ItemType has_many Items

class Order has_many OrderItems

我想在Order中找到Item为ItemType

的所有OrderItem
def get_by_item_type(id)
  order_items.where(:item => {:item_type_id => 3})

显然,我可以通过查找所有OrderItems,循环,测试和构建我自己的集合来实现这一点。没问题,但我想知道是否还有其他办法?

由于 / J

1 个答案:

答案 0 :(得分:4)

这将通过以下方式完成:

def get_by_item_type(id)
  order_items.joins(:item).where(:item_type_id => id)
end

如果您收到有关不存在/不明确列的错误,请查看

order_items.joins(:items).to_sql

以便找到正确的列名。