У вас есть два решения для этого.
1) Вы рассматриваете n recent
как n last
. Тогда вам не нужно ничего фантастического:
Article < ActiveRecord::Base
has_many :comments
named_scope :recently_commented, :include => :comments,
:order => "comments.created_at DESC",
:limit => 100
end
Article.recently_commented # will return last 100 comments
2) Вы относитесь к последним как к последнему x продолжительности.
Для ясности определим недавний как что-то, что было добавлено за последние 2 часа.
Article < ActiveRecord::Base
has_many :comments
named_scope :recently_commented, lambda { {
:include => :comments,
:conditions => ["comments.created_at >= ?", 2.hours.ago]
:order => "comments.created_at DESC",
:limit => 100 }}
end
Article.recently_commented # will return last 100 comments in 2 hours
Примечание Код выше будет загружать комментарии, связанные с каждой выбранной статьей.
Используйте :joins
вместо :include
, если вам не нужна энергичная загрузка.