我有一个特殊情况,我想在执行SQL查询之后才使用.first
。
我的情况如下:
User.select("sum((type = 'foo')::int) as foo_count",
"sum((type = 'bar')::int) as bar_count")
.first
.yield_self { |r| r.bar_count / r.foo_count.to_f }
然而,这会抛出一个SQL错误,提示我在GROUP BY
子句中应该包含我的user_id
。我已经使用to_a
找到了一个hacky的解决方案,但我真的想知道是否有一种正确的方法来强制在我的调用.first
之前执行。
pluck
可以替代select
吗? - tadmanUser.pluck("sum((type = 'foo')::int)::float / sum((type = 'bar')::int)::float").first
就是解决方法。 - Ulysse BN