[英]Rails 4: Sorting by 2 different scopes/class methods
我正在嘗試按將來的事件然后按已經結束的事件對事件進行排序。 我嘗試使用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的未定義方法'inactive'”,但是我嘗試了幾種不同的方式,但似乎無法弄清楚如何編寫。
您的方法將在通過數據庫運行后執行,並且速度很慢。
這可能可以改進:
模型
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.