我想做这样的事情:
class Store < ApplicationRecord
Product.select(:category).distinct do |p|
has_one "lowest_"+p.category+"_price".to_sym, -> { where(category: p.category).order(price: :asc) }, class_name: "Product"
end
end
但是rails似乎忽略了那些线条。当我用硬编码数组替换Product.select(:category).distinct
时,它工作正常,但它不是动态的。
我想这是某种初始化问题,但有解决方案吗?我以为我可以编写一个初始化程序,但是我不确定如何在创建类之后应用关联。可能只有一个直接的红宝石答案?
答案 0 :(得分:0)
你的代码出了问题,它没有达到预期的效果。
"lowest_"+p.category+"_price".to_sym
仅将"_price"
转换为符号。
我也会使用pluck
代替,因为您在这里不需要Product
模型。
尝试这样做:
class Store < ApplicationRecord
Product.pluck(:category).uniq do |category|
has_one "lowest_#{category}_price".to_sym, -> { where(category: category).order(price: :asc) }, class_name: Product
end
end