我有两个命名范围的以下模型:
class Blog < ApplicationRecord
scope :past_two_years, -> {where('end_date > ?', Date.today - 2.years)}
scope :order_by_end_date, -> {order('end_date DESC')}
end
我现在想要定义一个名为past_two_years_and_order_by_end_date
的'聚合'范围。此范围应回收现有范围,以保持代码DRY。
我知道我可以像这样创建一个类方法:
def self.past_two_years_and_order_by_end_date
past_two_years.order_by_end_date
end
但我更喜欢使用范围而不是类方法。
问题:这可能吗?是否可以编写组合/回收现有范围的聚合范围?
I did notice this similar question,但它已有八年历史了,之后一直在继续使用rails语法。
答案 0 :(得分:1)
这似乎有效:
scope :past_two_years_and_order_by_end_date, -> {self.past_two_years.order_by_end_date}