メッセージは、複数のコメントを持つことができます。Rails:コメント付きのメッセージを並べ替えるには?
class Message < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :message
end
次の名前付きスコープは、作成時刻順時間の与えられた範囲で作成されたメッセージは、(最新の最初)を返します。
scope :created_between,
lambda { |rng| where("created_at" => (rng[:start_time]..rng[:end_time])).
order("created_at DESC") }
どのようにできました最新の投稿(最新のもの)の作成時間順に並べられた、指定された時間範囲内に作成された投稿(メッセージ自体またはそのコメントの1つ)を持つメッセージを返す名前付きスコープを記述する
例:
次のメッセージが存在する場合:
Message 1 April, 2010
Comment 1 May, 2011
Comment 2 July 2011
Message 2 January 2011
Comment 1 August 2011
Comment 2 March 2011
Comment 3 February 2011
Message 3 March 2009
Comment 1 January 2010
Message 4 June 2011
その後、
scope :has_post_between({:start_time => <February 2010>,
:end_time => <August 2011>}), ...
は返す必要があります:
Message 2
Message 1
Message 4
Message 3
が原因で含まれていませんその投稿は2010年2月より前に作成されました。 Message 2
は、最新の投稿(2011年8月)を持っているため、最初です。
あなたが考慮にメッセージ自体を取ることはありません。 –