Rails 3适用于即将到来的“活动”

时间:2013-01-18 19:55:40

标签: ruby-on-rails scope rails-activerecord

尝试为: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相同。

无论如何,构建这个范围的正确方法是什么?

2 个答案:

答案 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