Предположите, что у меня есть Статьи Wiki со многими Изменениями. Я хотел бы сделать запрос с ActiveRecord через базу данных, которая только возвращает те Статьи, которые имеют Изменения, которые обновляются за прошлые 24 часа. Действительно ли такая вещь возможна?
Я предположил бы, что это будет что-то как:
Articles.find_all(:include => :revisions,
:conditions => {:revision[updated_at] => 1.week.ago..Time.now.utc})
Если бы это не возможно, там некоторый тип необработанного SQL, который я мог бы передать find_by_SQL, который это добилось бы цели?
Если вам нужна только статья и не требуется загружать все исправления, вы можете вместо этого использовать: joins. Он использует меньше памяти, потому что не загружает все исправления для каждой статьи. Используйте: include, хотя, если вы будете делать что-то вроде article.revisions
.
Article.find(:all,
:joins => :revisions,
:conditions => ["revisions.updated_at > ?", 24.hours.ago]
)
В зависимости от того, как именно вы назвали свои модели, это будет что-то вроде этого.
Article.find(:all, :include => :revisions, :conditions => ["revisions.updated_at > ?", 1.week.ago])