Rails 3. Проверка истинных значений в SQL - PullRequest
1 голос
/ 26 января 2012

Мне нужно проверить, имеет ли столбец exam значение true. Так что я настроил это, но это не работает ...

@exam_shipments = Shipment.where("exam <> NULL AND exam <> 0 AND customer_id = ?", current_admin_user.customer_id)

# This one gives me error "SQLite3::SQLException: no such column: true:"
@exam_shipments = Shipment.where("exam = true AND customer_id = ?", current_admin_user.customer_id) 

@exam_shipments = Shipment.where("exam = 1 AND customer_id = ?", current_admin_user.customer_id)

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Вы должны просто придерживаться синтаксиса AR:

@exam_shipments = Shipment.where(:exam => true, :customer_id => current_admin_user.customer_id)

Предполагается, что :exam является логическим полем для вашей Shipment модели. ActiveRecord заботится о преобразовании вашего запроса в правильный синтаксис для данной базы данных. Поэтому чем меньше встроенного SQL вы пишете, тем более независимым от базы данных и переносимым будет ваш код.

1 голос
/ 26 января 2012

Зачем вам нужно выполнять SQL?

Гораздо проще просто сделать

@exam_shipments = Shipment.find_by_id(current_admin_user.customer_id).exam?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...