簡體   English   中英

Rails 4:按2種不同的作用域/類方法排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM