1

我在通过表查询时遇到了一些问题,如果我只选择一条记录,它可以正常工作,但如果我选择多条,它就不起作用。例如

    Orders Table
      |
    / | \
OrderProducts Table
    \ | /
      |
    Products Table 

订单模式

has_many :order_products
has_many :products, :through => :order_products

订购产品型号

belongs_to :order
belongs_to :product

产品型号

has_many :order_products
has_many :orders, :through => :order_products

活动记录查询

Order.find(1).products // this works
Order.where(type_id:1).products // this doesn't seem to work

是不是不能用这种方式查询多个项目?基于此结构从另一个表中查询多条记录的最佳方法是什么,或者我需要更新我的模型结构?我感谢所有的帮助!再次感谢!

4

1 回答 1

1
@orders_ids = [1, 5, 6]
Order.where(id: @orders_ids).map{|order| order.products }

它将返回 ID 为 1、5、6 的 Order 产品

在一个视图中实现这一点:

在控制器动作中:

@orders_ids = [1, 5, 6]
@orders = Order.where(id: @orders_ids)

在 html.erb 中:

<% @orders.each do |order| %>
  <%= order.number %>
  <% order.products.each do |product| %>
    <%= product.name %>
  <% end %>
<% end %>
于 2013-07-16T07:05:55.923 回答