【发布时间】:2011-05-14 05:36:28
【问题描述】:
使用 rails 3 风格我将如何写出相反的:
Foo.includes(:bar).where(:bars=>{:id=>nil})
我想找到 id 不是 nil 的地方。我试过了:
Foo.includes(:bar).where(:bars=>{:id=>!nil}).to_sql
但是返回:
=> "SELECT \"foos\".* FROM \"foos\" WHERE (\"bars\".\"id\" = 1)"
这绝对不是我需要的,而且几乎看起来像是 ARel 中的一个错误。
【问题讨论】:
-
!nil在 Ruby 中计算为true,而 ARel 在 SQL 查询中将true转换为1。因此,生成的查询实际上就是您所要求的 - 这不是 ARel 错误。
标签: ruby-on-rails rails-activerecord arel