2011-11-04 37 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之間。你的問題有點混亂。

相關問題