0
我想为模型早餐,公寓和别墅制作一个页面(宣传)。这个想法是在一个范围内将这些模型合并到一个作用域中,其中属性promote
为true
并按属性sorting
排序可能吗?适用于多种车型
Thanks..remco
我想为模型早餐,公寓和别墅制作一个页面(宣传)。这个想法是在一个范围内将这些模型合并到一个作用域中,其中属性promote
为true
并按属性sorting
排序可能吗?适用于多种车型
Thanks..remco
除非这些模型UNION兼容的,你不能在一个语句进行查询,但需要三种不同的查询。
假设这些模型是不同的,你可以做的是
(Villa.where(promote: true).to_a +
Apartment.where(promote: true).to_a +
Breakfast.where(promote: true).to_a).sort_by(&:sorting)
从这句话开始,有很多方法可以更优雅地写,包括范围,自定义函数等
def promotions(*models)
models.inject([]) do |records, model|
records += model.where(promote: true).to_a
end.sort_by(&:sorting)
end
promotions(Villa, Apartment, Breakfast)
# => [..., ..., ...]
谢谢..我会尝试它! – Remco 2014-11-11 15:18:49