0

我正在使用 Rails 3.1.0

我有两个模型,A 和 B。A has_one B,但 B 可以为空。B 属于 A。B 有一个名为“可见”的布尔字段。

我想获取所有具有非空 B 和“可见”设置为 true 的 B 的 A 记录。

进行此查询的简洁有效的方法是什么?

到目前为止我所做的:

我创建了一个范围,它可以获取带有非空 B 的 A(我认为)。

范围:has_b,包括(:b).where(B.arel_table[:id].not_eq(nil))

有没有办法将可见 == true 条件链接到这个范围?

4

2 回答 2

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 })
于 2012-11-01T04:15:46.557 回答
0

看看这里的“加入”部分。这个查询应该做你需要的:

A.joins(:bs).where(:bs => { :visible => true })
于 2012-11-01T02:57:50.837 回答