尝试为:next
开发一个范围,该范围将返回给定模型end_at
的下一个即将发生的'事件'(或其他):
这将带来所有即将举行的活动:
scope :upcoming, lambda { where("end_at >= ?", Date.today).order("start_at") }
因此认为以下内容将返回该有序列表中的第一个事件:
scope :next, lambda { where("end_at >= ?", Date.today).order("start_at").first }
但它会返回所有事件!?!与Event.all
相同。
无论如何,构建这个范围的正确方法是什么?
答案 0 :(得分:2)
假设您的upcoming
范围确实有效,您可以从next
范围调用此内容:
scope :next, lambda { upcoming.first }
我不确定这实际上是否有效,但我建议将其更改为类方法:
def self.next
upcoming.first
end
答案 1 :(得分:1)
您可以编写一个类方法并使用它来代替..
def self.next
where("end at >= ?", Date.today).order("start_at").first
end