2010-09-21 65 views
1

我有兩個型號:的ActiveRecord找到包括,在條件包括不影響父

class Parent < ActiveRecord::Base 
    has_many :children 
end 

class Child < ActiveRecord::Base 
    belongs_to :parent 
end 

我想找到所有的父母和他們的孩子,與只有孩子的條件。但如果父母沒有符合該標準的孩子,我仍然需要父母。

我嘗試這樣做:

Parent.all(:include => :children, :conditions => {'children.some_condition' => 'some_value'}) 

然而,這並不返回沒有匹配的孩子的父母。我希望所有的父母,只有那些符合我的條件的父母的孩子。

不幸的是我使用的是Rails 2.1.1。我想升級,但現在不是我的主要優先事項,所以請考慮可能實施中的限制。
編輯:從頭開始,剛剛升級到2.3.6,是相當容易

任何幫助是極大的讚賞。

回答

0

我不太確定它是否可以與Rails 2.1.1一起使用,但我認爲它應該。

您的條件適用於所有記錄 - 也適用於那些沒有任何子女的記錄。所以你需要添加這樣的附加條件:

Parent.all(:include => :children, :conditions => ["children.some_condition = ? OR children.id is null", "some_value"] 
+0

剛剛升級了服務......它實際上很簡單,測試都通過了......明天我會試試這個機會。 – brad 2010-09-21 21:50:38