如何在rails活动记录查询中比较null

时间:2010-12-02 22:12:12

标签: ruby-on-rails-3 activerecord null

如何在rails活动记录中匹配null。

User.where(['id = ? and active = ? and activation_code = ?', params[:id], 0, NULL]).first

 User.where(['id = ? and active = ? and activation_code = ?', params[:id], 0, nil]).first

两者都不起作用。

3 个答案:

答案 0 :(得分:25)

诀窍是使用散列,在这种情况下,ActiveRecord将使用“IS NULL”正确生成nil值的SQL。

User.where({:id => params[:id], :active => 0, :activation_code => nil})

答案 1 :(得分:20)

试试这样:

User.where(['id = ? and active = ? and activation_code IS NULL', params[:id], 0]).first

答案 2 :(得分:6)

在Rails 4中,你可以这样做:

User.where(id: params[:id], active: 0).where.not(activation_code: nil)