Ответ 1
Попробуйте следующее:
User.where(['id = ? and active = ? and activation_code IS NULL', params[:id], 0]).first
Как я могу сопоставить 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
Оба не работают.
Попробуйте следующее:
User.where(['id = ? and active = ? and activation_code IS NULL', params[:id], 0]).first
Трюк использует хэш, и в этом случае ActiveRecord будет правильно генерировать SQL для значений nil, используя "IS NULL".
User.where({:id => params[:id], :active => 0, :activation_code => nil})
В Rails 4 вы можете сделать это:
User.where(id: params[:id], active: 0).where.not(activation_code: nil)