メッセージには複数のコメントを含めることができます。
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月)があるため、最初になります。