2012-11-01 65 views
0

我用Rails 3.1.0得到一個模型的所有記錄,其中的關聯是不是null,

我有兩個型號,A和B. 一個HAS_ONE B中的關聯符合一定的條件,但B可以是空值。 B belongs_to A. B有一個名爲「visible」的布爾字段。

我想獲得所有A記錄有一個非空B和B與「可見」設置爲true。

做這個查詢的簡潔而有效的方法是什麼?

什麼我迄今所做的:

我創建了一個範圍那得到A的非空的B(我認爲)。

範圍:has_b,包括:(:B)。凡(B.arel_table [:ID] .not_eq(無))

有一種方法,以鏈可見==真條件此範圍?

回答

2
A.includes(:bs).where(:bs => { :visible => true }) 

扎克·坎普幾乎是正確的

因此,在範圍:

scope as_with_visible_bs includes(:bs) 
    .where(B.arel_table[:id].not_eq(nil)) 
    .where(:bs => { :visible => true }) 
0

看看'加入'部分here。該查詢應該做你需要的東西:

A.joins(:bs).where(:bs => { :visible => true }) 
+0

它返回的dublicated收集:如 – antiqe

相關問題