我有一个典型的模型设置:
Store has_many Items
Orders has_many Items :through OrderItems
OrderItems
但是,在OrderItems上,我有一个名为“quantity”的字段,告诉我订单中每个项目有多少。我无法弄清楚如何正确检索此信息。
ex. Order.find(1).order_items # has the list of items, but no "quantity" field
有什么想法吗?
答案 0 :(得分:1)
我有同样的情况。我曾经使用过另一种关联。喜欢
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
答案 1 :(得分: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%肯定会起作用),那应该有效,因为你告诉我只会检索到一件东西。此外,您可以通过执行以下操作来循环检索已检索的订单:
@orders = Order.find(1)
@orders.each do |order|
order.order_items.quantity
end
但是,如果您想要获得order_items的“计数”,则需要使用.count而不是.quantity。你的问题有点令人困惑。