Ruby on Rails вопрос относительно объема - PullRequest
0 голосов
/ 03 мая 2011

У меня есть следующая именованная область в моей модели

class User
  scope :single_action, where("parent_id = ?", nil)
end

Несмотря на то, что есть записи с parent_id со значениями nil, они, похоже, недоступны.

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 Не могли бы вы помочь мне решить эту проблему.

Спасибо:)

1 Ответ

5 голосов
/ 03 мая 2011

Измените это на:

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)
...