1

そのためのスコープを開発しようとすると: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

とにかく、このスコープを構築する正しい方法は何ですか?

4

2 に答える 2

2

スコープが実際に機能していると仮定すると、upcomingスコープからこれを呼び出すことができますnext

scope :next, lambda { upcoming.first }

これが実際に機能するかどうかはわかりませんが、クラス メソッドに変更することをお勧めします。

def self.next
  upcoming.first
end
于 2013-01-18T20:19:17.700 に答える
1

クラスメソッドを作成して、代わりにそれを使用できます..

def self.next
    where("end at >= ?", Date.today).order("start_at").first
end
于 2013-01-18T20:20:39.597 に答える