2011-05-03 37 views
6
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 
查找模型

我想,秩序中,找到其中的项目是类型的ItemTypeRails 3中ActiveRecord的:通过查找它的关联

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

很显然,我可以找到所有的OrderItems做到这一切的OrderItems,循环,测试和构建我自己的集合。那里没问题,但我想知道是否有另一种方法?

感谢 /J

回答

4

这与做:

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

如果你得到一个关于一个不存在/不明确的列的错误,在看看

order_items.joins(:items).to_sql 

为了找到正确的列名称。

+0

谢谢,我会尽快尝试,因为它看起来是正确的...谢谢 – 2011-05-28 20:05:03

+0

终于实现了这个系统的一部分,像一个魅力工作。 – 2011-06-10 15:24:31