我的模型上有以下范围。
class ProgrammeInstance < ActiveRecord::Base
# more code
scope :published, -> { where(published: true) }
scope :order_by_start_date, -> { order(:start_date) }
scope :future_with_offset, -> { where("start_date >= ?", Date.today - 7.days) }
scope :upcoming_with_offset, -> { future_with_offset.published.order_by_start_date }
# more code
end
我使用范围查询从rails返回的列表
programme_instances.upcoming_with_offset
这将返回空的结果集。但是,如果我用作用域的内容而不是作用域本身来调用
programme_instances.future_with_offset.published.order_by_start_date
我得到了结果。
一定有什么我不知道的。有人能解释为什么吗?
谢谢。
最佳答案
class ProgrammeInstance < ActiveRecord::Base
scope :future_with_offset, -> { where(condition) }
scope :published, -> { where(published: true) }
scope :order_by_start_date, order('start_date')
end
你可以在控制器中调用它
ProgrammeInstance.future_with_offset.published.order_by_start_date