消息可以有多個註釋: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") }
我怎麼能編寫一個命名範圍,該範圍返回在給定時間範圍內創建的具有發佈(郵件本身或其評論之一)的郵件,按照最新發布的創建時間排序(最新的發佈時間)?
實施例:
如果存在下面的消息:
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月)。
你不考慮消息本身。 –