Почему в моем предложении in (?) Выполняется идентификатор sql в ('1,2,3') вместо идентификатора в (1,2,3) - PullRequest
1 голос
/ 17 апреля 2011

У меня есть строка

"1,2,3"

в переменной, я делаю:

User.where("id in (?)", user_id_list)

В результате sql:

select users.* from users where (id in ('1,3,4'))

Я хочу:

select users.* from users where (id in (1,3,4))

Как это исправить?

должен ли user_id_list быть массивом?

1 Ответ

5 голосов
/ 17 апреля 2011

Когда вы передаете строковое значение, rails будет заключать его в кавычки, поэтому вы видите свои результаты.

Когда у вас есть массив, вы можете просто сделать:

User.where(:id => user_id_list)

и Rails автоматически создаст для вас предложение IN.

Так как это идентификаторы пользователя с целыми числами, я бы предложил просто:

User.where(:id => user_id_list.split(',').map(&:to_i))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...