2011-05-03 70 views
0

我有以下的命名範圍在我的模型的問題並不可用。Ruby on Rails的有關範圍

ruby-1.9.2-p0 > User.select("name") 
=> [#<User parent_id: nil, name: "John">, #<Task parent_id: 1, name: "Felix">, #<Task parent_id: nil, name: "John Felix">] 

我嘗試使用活動記錄查詢做同樣的,但它也返回空結果

ruby-1.9.2-p0 > User.where("parent_id = ?",nil) 
=> [] 

我定義這似乎是工作的罰款幾個其他範圍。 我的Rails版本是3.0.7,Ruby版本是Ruby 1.9.2 請幫我解決這個問題。

謝謝:)

回答

5

修改成:

User.where(:parent_id => nil) 

你可以看到區別(你實際上是試圖匹配字符串「NULL」,而不是檢查的值爲NULL):

ruby-1.9.2-p180 :031 > User.where("remember_token = ?", nil) 
=> [] 
ruby-1.9.2-p180 :032 > User.where(:remember_token => nil) 
=> [#<User id: 232255501, ....... 

ruby-1.9.2-p180 :029 > User.where(:remember_token => nil).to_sql 
=> "SELECT `users`.* FROM `users` WHERE (`users`.`remember_token` IS NULL)" 
ruby-1.9.2-p180 :030 > User.where("remember_token = ?", nil).to_sql 
=> "SELECT `users`.* FROM `users` WHERE (remember_token = NULL) 
+0

感謝它工作:) – felix 2011-05-04 12:43:32