Как сравнить null в активной записи записей rails

Как я могу сопоставить null в активной записи rails.

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

Оба не работают.

Ответ 1

Попробуйте следующее:

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

Ответ 2

Трюк использует хэш, и в этом случае ActiveRecord будет правильно генерировать SQL для значений nil, используя "IS NULL".

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

Ответ 3

В Rails 4 вы можете сделать это:

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