Используя стиль rails 3, как бы я написал противоположность:
Foo.includes(:bar).where(:bars=>{:id=>nil})
Я хочу найти, где id НЕ равен нулю. Я пытался:
Foo.includes(:bar).where(:bars=>{:id=>!nil}).to_sql
Но это возвращается:
=> "SELECT \"foos\".* FROM \"foos\" WHERE (\"bars\".\"id\" = 1)"
Это определенно не то, что мне нужно, и это почти похоже на ошибку в ARel.
!nil
оценивается какtrue
в Ruby, а ARel переводитtrue
в1
в запросе SQL. Таким образом, сгенерированный запрос на самом деле является тем, о чем вы просили - это не была ошибка ARel. - person yuval   schedule 10.02.2017