Solidus:具有许多关系的排序查询

时间:2018-01-30 14:49:51

标签: ruby-on-rails spree solidus

我正在学习一些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构建一个好的查询,任何帮助都将不胜感激。

1 个答案:

答案 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