Не уверен, как ваш метод выглядел ранее, но я бы начал с:
class Book < ActiveRecord::Base
def self.recently_commented
self.find(:all,
:include => :comments,
:conditions => ['comments.created_at > ?', 5.minutes.ago])
end
end
Это должно найти все книги, для которых был создан комментарий за последние 5 минут.(Возможно, вы также захотите добавить ограничение).
Я также хотел бы создать базовый класс для этой функции, чтобы избежать повторения кода:
class Commentable < ActiveRecord::Base
self.abstract_class = true
has_many :comments, :as => :commentable
def self.recently_commented
self.find(:all,
:include => :comments,
:conditions => ['comments.created_at > ?', Time.now - 5.minutes])
end
end
class Book < Commentable
end
class Article < Commentable
end
Также выхочу посмотреть на использование плагина для достижения этой цели.Например, act_as_commentable .