Rails 3:如何查找字段可能等于nil的记录?

Mis*_*hko 1 mysql sql activerecord ruby-on-rails ruby-on-rails-3

我想找到所有SongWriter与之maiden_name相等的my_maiden_name

注意: my_maiden_name可能是nil

我试过了:

SongWriter.where("maiden_name = ?", my_maiden_name)
Run Code Online (Sandbox Code Playgroud)

它的工作原理除外my_maiden_name = nil.

何时my_maiden_name = nil,生成的查询是:

SELECT `song_writers`.* FROM `song_writers` WHERE (maiden_name = NULL)
Run Code Online (Sandbox Code Playgroud)

而不是:

SELECT `song_writers`.* FROM `song_writers` WHERE maiden_name IS NULL
Run Code Online (Sandbox Code Playgroud)

如何概括活动记录查询以包含案例my_maiden_name = nil

Sim*_*tti 5

使用哈希语法.ActiveRecord将为您进行转换.

SongWriter.where(:maiden_name => my_maiden_name)
Run Code Online (Sandbox Code Playgroud)

my_maiden_namenil它会使用IS NULL.否则会使用=.