我有三个模特
class Item < ActiveRecord::Base
has_many :order_items
has_many :orders, through: :order_items
end
class OrderItem < ActiveRecord::Base
belongs_to :order
belongs_to :item
end
class Order < ActiveRecord::Base
has_many :order_items
has_many :items, :through => :order_items
end
我为每个用户提供了一个帮助方法'current_order'。
Item.includes(:order_items)
返回所有order_items。
我需要包含所有项目:order_items条件为'order_id = current_order'。
答案 0 :(得分:0)
我不知道你的意思&#34;包括:order_items&#34;但答案很简单:
Order.where(order_id: current_order).items
答案 1 :(得分:0)
includes
您不需要current_order
。
基本上,includes
应该会阻止N+1 queries
问题,当您从一个表中获得多条记录并尝试为每条记录获取关联时会发生这种问题。
在您的情况下,current_order
将运行一个查询:
select * from orders where order_id = 1
和current_order.items
只会运行另一个查询:
select * from order_items where order_id = 1