Сообщение может иметь несколько комментариев:
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") }
Как я могу написать именованную область видимости, которая возвращает сообщения, которые имеют сообщение (само сообщение или один из его комментариев), которое было создано за определенный промежуток времени, упорядоченный по времени создания самого последнего сообщения (последнее сначала)? 1007 *
Пример:
Если существуют следующие сообщения:
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 года.
Message 2
является первым, потому что у него есть последнее сообщение (август 2011).