我正在尝试通过未来事件然后按已经结束的事件对事件进行排序。我尝试使用2个不同的范围,但我现在想,我可能需要使用类方法。我只是在语法上如何努力编写这些方法。
event.rb :
def active
self.event_date > Time.now
end
def inactive
self.event_date < Time.now
end
“event_date”是事件表中的日期时间列。
events_controller.rb :
def index
@events = Event.all.sort_by {|a,b| [a.active, b.inactive]}
end
使用这段代码,我收到一个错误:“未定义的方法`非活动'为nil:NilClass”但我尝试了几种不同的方法,似乎无法弄清楚如何编写它。
答案 0 :(得分:3)
您的方法将在运行数据库后执行,并且速度很慢。
这可能会有所改善:
模型
scope :active, -> { where('event_date >= ?', Time.now) }
scope :inactive, -> { where('event_date < ?', Time.now) }
控制器
@active_events = Event.active
@inactive_events = Event.inactive
@events = @active_events + @inactive_events