我正在使用Rails 3.1.0
我有两个模型A和B。A has_one b,但b可以为null。B属于A.B有一个布尔田,称为"可见"。
我想获得所有具有"可见"设置为true的非挂钩B和A B的记录。
做出此查询的简洁有效的方法是什么?
我到目前为止所做的:
我创建了一个范围,该范围与非挂钩B的A(我认为)。
范围:has_b,include(:b)。where(b.arel_table [:id] .not_eq(nil))
有没有办法将可见的==真实条件链接到此范围?
A.includes(:bs).where(:bs => { :visible => true })
Zach Kemp几乎是正确的
所以,在范围:
scope as_with_visible_bs includes(:bs)
.where(B.arel_table[:id].not_eq(nil))
.where(:bs => { :visible => true })
在此处查看"加入"部分。此查询应该做您需要的事情:
A.joins(:bs).where(:bs => { :visible => true })