2011-05-03 67 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