我正在使用Rails 3.1.0
我有两个型号,A和B. 一个has_one B,但B可以为null。 B belongs_to A. B有一个名为“visible”的布尔字段。
我希望获得所有具有非空B和B且“可见”设置为true的B记录。
执行此查询的简洁有效方法是什么?
到目前为止我做了什么:
我创建了一个范围,可以获得具有非空B的A(我认为)。
范围:has_b,包括(:b).where(B.arel_table [:id] .not_eq(nil))
有没有办法将visible == true条件链接到此范围?
答案 0 :(得分: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 })
答案 1 :(得分:0)
查看“加入”部分here。此查询应该满足您的需求:
A.joins(:bs).where(:bs => { :visible => true })