SQL в Rails - цепочка "И" - PullRequest
       9

SQL в Rails - цепочка "И"

0 голосов
/ 22 августа 2009

Я не понимаю, почему SQL не нравится мой запрос:

@unreadmessages = Message.find(:all, :conditions => ["receiver_id = ? AND receiver_archived = ? AND read = ?", self.current_user, "No", "No"])

Есть другой способ написать это, но я хочу, чтобы мой стиль был непротиворечивым (этот метод позволяет избежать SQL-инъекций).

Спасибо за ваш вклад!

Ответы [ 2 ]

4 голосов
/ 22 августа 2009

«Чтение» - это зарезервированное слово в MySQL. Я рекомендую переименовать колонку. В качестве альтернативы вы можете поместить его в обратные тики каждый раз, когда на него ссылаются.

@unreadmessages = Message.find(:all, :conditions => ["receiver_id = ? AND receiver_archived = ? AND `read` = ?", self.current_user, "No", "No"])

Я рекомендую переименовать, хотя.

1 голос
/ 22 августа 2009

Я собираюсь предположить, что вы на самом деле не храните слово «Нет» в своей базе данных, чтобы отслеживать истину / ложь. Если вы используете логическое значение или бит, попробуйте это.

@unreadmessages = Message.find(:all, :conditions => ["receiver_id = ? AND receiver_archived = ? AND read = ?", self.current_user.id, false, false])

Edit: Посмотрите, что ryanb говорит о «прочитанном», и, пожалуйста, примите во внимание то, что я сказал о ваших столбцах, если это новое приложение и вы можете контролировать, как выглядит схема базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...