在活动记录中进行搜索时,我正在查找没有将归档位设置为true的记录。
某些归档位为空(未归档),其他归档设置为false。
显然,
Project.all(:conditions => {:archived => false})
使用带有空值的存档位错过项目。如何从活动记录中选择所有非归档项目?
答案 0 :(得分:83)
Rails 4(可能更早)支持:
Project.where(archived: [false, nil])
......这很简洁。
答案 1 :(得分:17)
试试这个(在Rails 2中):
Project.all(:conditions => ['archived IS NULL OR archived = ?', false])
这是旧版Rails的限制,如下所述:https://rails.lighthouseapp.com/projects/8994/tickets/1181-ar-find-producing-null-when-it-should-be-is-null
答案 2 :(得分:7)
正确的数据库不可知的方法是:
Project.where("archived IS NULL OR archived = ?", false)
答案 3 :(得分:0)
@metasoarous
尝试:
Project.all(:conditions => "archived IS NULL OR archived = 'F'")
答案 4 :(得分:0)
如果您想与数据库无关,可以在Rails 3中执行此操作:
Project.where("archived IS NULL OR archived = #{ActiveRecord::Base.connection.quoted_false}")