2011-11-04 65 views
0

我有一个典型的模式设置:如何使用以下方法获取许多额外数据?

Store has_many Items 
Orders has_many Items :through OrderItems 
OrderItems 

然而,在的OrderItems我有一个名为“数量”字段告诉我有多少每个项目的是订单上。我无法弄清楚如何正确检索这些信息。

ex. Order.find(1).order_items # has the list of items, but no "quantity" field 

有什么想法?

回答

1

我有同样的situation.I曾使用过其他协会this.Like

Store has_many Items 
Orders has_many Items :through OrderItems 
Orders has_many OrderItems 

它会使用相同的order_id映射,然后

Order.find(1).order_items # has the list of order_items, with "quantity" field in there 
+0

您是否能够“加入”该物品和订单@item,以便“数量”属性位于@item上? – kidcapital

+0

好吧,您可以在项目模型中执行相同的操作,例如Items has_many OrderItems.Then Item.find(1).order_items将为您提供数量列表。我不知道,这是您的问题吗?或者请澄清你的问题。 –

+0

我意识到你是对的。我可以做order_items.item并且物品信息在那里。谢谢 – kidcapital

0

我有一个类似的问题:Getting no method error when trying to read attribute from join model

您遇到的问题是您正在尝试获取Orders散列上的属性order_items。即使你告诉Rails只找到(1),它仍然会抓取一个哈希,因为它不知道在执行find(1)时只会捕获一个项目。我相信如果你这样做Order.find(1).first.order_items.quantity(不是100%肯定会起作用),那应该起作用,因为你告诉rails只会回收一件东西。此外,您还可以通过检索订单做这样的循环:

@orders = Order.find(1) 
    @orders.each do |order| 
    order.order_items.quantity 
    end 

但是,如果你想获得的ORDER_ITEMS的“计数”,则需要改用.quantity的.Count之间。你的问题有点混乱。

相关问题