2010-02-21 53 views
6

想象一下,我有許多修訂的wiki文章。我想通過數據庫對ActiveRecord進行查詢,該數據庫僅返回那些在過去24小時內更新了修訂版的文章。這樣的事情可能嗎?Rails ActiveRecord:是否可以組合:include和:條件查詢?

我想像它會是這樣的:

Articles.find_all(:include => :revisions, 
        :conditions => {:revision[updated_at] => 1.week.ago..Time.now.utc}) 

如果這是不可能的,是有一些類型的原始SQL的,我可以傳遞給那個的find_by_sql會做的伎倆?

回答

4

如果您只需要在文章並不需要所有修訂的預先加載,你可以用:加入吧。它使用更少的內存,因爲它不會預載每篇文章的所有修訂。使用:包括雖然如果你會做像article.revisions

Article.find(:all, 
    :joins => :revisions, 
    :conditions => ["revisions.updated_at > ?", 24.hours.ago] 
) 
+0

如果您想查找所有文章以及24小時前更新的那些修訂版,那麼情況如何? (而不是減少文章的數量)。 – sscirrus 2010-11-04 00:12:16

+0

如果你想要的文章和修訂,我會使用:包括而不是:連接 – 2010-11-04 00:16:38

3

取決於你的模型命名方式,它會是這樣的。

Article.find(:all, :include => :revisions, :conditions => ["revisions.updated_at > ?", 1.week.ago])