有没有办法从模型对象的多个实例中“组合”(如果这是正确的词?)范围?例如:
class Order
scope :made_today, -> { where(date: Date.today) }
has_many :products
end
如果我尝试:
Order.made_today.products
我得到NoMethodError: undefined method 'products' for #<Order::ActiveRecord_Relation:...>
实现这一目标的最有效方法是什么?希望,作为单个SQL语句,让数据库完成所有的咕噜声。
答案 0 :(得分:0)
这与&#34;组合范围&#34;无关,您只是无法在记录的集合上调用关联。你也不能使用Order.products
。
如果您想获取记录集合的所有产品,则需要加入该表。
答案 1 :(得分:0)
您可以使用ActiveRecord Relations以相反的方向执行此操作:
Product.where(order: Order.made_today)
此外,这应该只需要一个SQL查询。
注意:正如@maegar所解释的那样,这不是单个订单。为此,您希望处理订单的实例:
@order = Order.made_today.first
@order.products #=> [<Product>, <Product>]