Как сравнить нуль в запросе активной записи рельсов - PullRequest
12 голосов
/ 03 декабря 2010

Как мне сопоставить ноль в активной записи рельсов.

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 ]

25 голосов
/ 03 декабря 2010

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

User.where({:id => params[:id], :active => 0, :activation_code => nil})
20 голосов
/ 03 декабря 2010

Попробуй так:

User.where(['id = ? and active = ? and activation_code IS NULL', params[:id], 0]).first
7 голосов
/ 14 июня 2016

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

User.where(id: params[:id], active: 0).where.not(activation_code: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...