我正在学习一些Solidus(Spree的叉子)。我在readme
之后构建了沙箱现在我想在Product中添加一个范围来构建一个查询,对查询每个变体的产品进行排序。对于每种产品,我想评估每种产品的最低变体价格。
例如,如果我有三种产品
a.price = 2
b.price = 3
c.price = 4
a和b只有主变体,c有两个变体
c.variants.first.price = 4
c.variants.last.price = 1
订购的产品应
c, a, b
我设法在使用数组的home #index中执行此操作,但我在 home / index.html.erb 方法中打破了缓存(cache_key_for_products)。 / p>
所以我想做同样的事情,但使用 ActiveRecord_Relation
我不知道如何使用rails和solidus构建一个好的查询,任何帮助都将不胜感激。
答案 0 :(得分:0)
希望这可能对你有所帮助。
class Product < ApplicationRecord
has_many :variants, dependent: :destroy
end
class Variant < ApplicationRecord
belongs_to :product
end
def index
@products = Product.left_outer_joins(:variants).order("case when variants.id is null then products.price else variants.price end asc")
end