使用Spree和ransack,怎样才能返回Spree :: Orders中包含的Spree :: Variants,这些变量自某个日期以来已经完成? ransack文档提供了一些关于搜索关联的建议,但似乎不够深入。
Spree::Order
has_many :line_items
Spree::LineItem
belongs_to :line_item
belongs_to :variant
Spree::Variant
has_many: line_items
可以使用以下方式搜索已完成的订单:
o=Spree::Order.complete.ransack(completed_at_gt: '2015-05-01')
但是如何在这些订单中找到Spree :: LineItems并返回Spree :: Variants'这些订单中的SKU尚不清楚。
我试图使用ransack,因为这将在Spree报告中使用。
答案 0 :(得分:1)
你根本不需要在这个区域使用搜索。 ActiveRecord将让您做您需要的事情:
.result
如果必须使用ransack,则可以使用Spree::Order.complete.ransack(
completed_at_gt: '2015-05-01'
).result.joins(
line_items: :variant
).select(:sku).distinct.pluck(:sku)
获取ActiveRecord关系并应用连接等。
.pluck
由于您没有Spree::Order.complete.ransack(
completed_at_gt: '2015-05-01'
).result.joins(
line_items: :variant
).select(:sku).map(&:sku).uniq
,因此您正在运行一个真正旧版本的Spree,这是一个pre-Rails 4.您可以使用以下方式获得结果:
/dev/shm