2015-04-08 2 views
0

Я пытаюсь запросить мою базу данных с булевым типом, который передается мне через контроллер в виде строки. Что Rails пытается сделать, это следующее:ActiveRecord string booleans as query

SELECT "orders".* FROM "orders" WHERE "orders"."complete" = ? [["complete", "false"]] 

Это дает пустой массив, который не должен иметь место. Попробовав вручную получать записи через консоль rails, я получаю те же результаты. Однако замена «false» для «f» решает проблему.

Это не является идеальным решением для использования «п» в качестве замены, потому что я использую emberjs и логический тип в моей модели внешнего интерфейса, который по умолчанию посылает вверх «истинный» или «ложный»

Почему обыкновение ActiveRecord принять полные логические строки как строку и как я могу заставить это сделать это?

+0

, что Ваш запрос ActiveRecord? – shivam

+0

@orders = Order.where (complete: false), где false приходит из хэша парасов – tomasbasham

+0

вы можете попробовать этот '@orders = Order.where (" complete =? ", False)' – shivam

ответ

1

По внешнему виду вы не можете сделать это без какого-либо помощника. См выбранный ответ здесь:

String "true" and "false" to boolean

+0

Вот чего я боялся. Спасибо за ответ. Я просто перехватываю логическое значение в хэше params и преобразовываю его, прежде чем я сделаю запрос – tomasbasham