#ruby-on-rails #activerecord
#ruby-on-rails #activerecord
Вопрос:
Я пытаюсь это сделать, не уверен, правильно ли я это делаю:
User.where("region_id => ?", region_ids).order("id ASC")
region_ids = [1234,234322,234324,2343,....]
Также, сработает ли это, если region_ids пуст (не null, но empty)
Я вижу ошибку:
check the manual that corresponds to your MySQL server version for the right syntax to use near '=> NULL) ORDER BY id ASC' at line 1:
Когда я был в режиме отладчика, я выводил region_ids, и это было [] .
Ответ №1:
Вы смешиваете синтаксис Ruby и SQL в строке. То, что вы хотите, больше похоже на ("region_id in (?)", region_ids)
или ({ "region_id" => region_ids })
.
Комментарии:
1. в основном верно, но первым примером должен быть («region_id в (?)», region_ids).
2. Спасибо, я не мог вспомнить, когда Rails сделал это автоматически.
3. если region_ids равен [], отображается ли он как NULL в запросе? похоже, это для меня…
4. @Blankman Мое предположение состояло бы в том, что он будет генерировать SQL типа:
region_id in ()
если region_ids пуст.
Ответ №2:
Вам нужно изменить порядок двух строк, region_ids должен быть установлен перед пользователем.где, потому что теперь region_ids равен НУЛЮ при вызове where().