Rails activerecord has_many to has_many,查询全部?

时间:2013-07-16 06:05:15

标签: ruby-on-rails activerecord ruby-on-rails-3.2

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

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

订购模型

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

OrderProducts模型

belongs_to :order
belongs_to :product

产品型号

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

Activerecord查询

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

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

1 个答案:

答案 0 :(得分:1)

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

它将返回ID为1,5,6的订单产品

在视图中实现此功能:

控制器操作中的

@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 %>