Rails - как искать на основе логического поля? (Ошибка MySQL) - PullRequest
10 голосов
/ 16 февраля 2011

Я выполняю следующий запрос

@projects = @company.projects.where("active = ?", true).order("created_at ASC")

и получаю сообщение об ошибке:

`ActiveRecord::StatementInvalid: Mysql::ParseError: You have an error in your SQL...`

ошибка указывает на = '1'.

Я пробовал много вариантов в моем запросе, но не могу понять проблему.Как я могу решить это?

Ответы [ 2 ]

28 голосов
/ 16 февраля 2011

Попробуйте:

@projects = @company.projects.where(:active =>  true)

(также работает со строками 'active').

Вы также можете посмотреть на http://guides.rubyonrails.org/active_record_querying.html#hash-conditions для более подробной информации.

Есть также хороший Railscast об этом, который объясняет, почему у вас могут быть проблемы (мне не разрешено публиковать 2 ссылки, поэтому вы должны искать это :))

8 голосов
/ 16 февраля 2011

Вам не нужно использовать параметризованные запросы с литералами, просто сделайте это:

@projects = @company.projects.where("active = 1").order("created_at ASC")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...