如何使用以下方法获取许多额外数据?

时间:2011-11-04 21:12:33

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个典型的模型设置:

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

有什么想法吗?

2 个答案:

答案 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。你的问题有点令人困惑。