我目前有一个范围,我正在尝试查找在关联中创建的最后一条记录,如果特定的布尔值为 false,则选择它
IE Foo has_many Bar's 和 Bar's 有一个名为 bazzed 的布尔列
scope :no_baz, joins(:bars).order("bars.id DESC").limit(1).where("bars.bazzed = 'f'")
这个问题是rails把这个查询变成了这样的东西
SELECT "foos".* FROM "foos" INNER JOIN "bars" ON "bars"."foo_id" = "foos"."id" WHERE (bars.bazzed = 'f') ORDER BY bars.id DESC LIMIT 1
问题在于 rails 在 where 子句之后调用 order 和 limit,我正在寻找的是先执行 order 和 limit 以尝试找到最后一个设置为 false 的 bar。
是否有本地 AR 方式来执行我试图完成的查询?
编辑
我试图抓住有一个 bar 的 foo,其中最后一个 bar 设置为 false 并且只有当 foo 的最后一个 bar 有 false bazzed 时。