Условия массива для выбора по запросу Active Record - PullRequest
1 голос
/ 06 июля 2011

Я хочу иметь возможность указывать специфичные для пользователя условия в вызове MAX () sql в части: select запроса активной записи (Rails 2.3.12). К сожалению, безопасная интерполяция строк не работает для условия: select. Код ниже, есть ли другой способ вручную убедиться, что входящие значения безопасны? (Они должны быть такими, какие они есть, но вы никогда не можете быть слишком уверены.)

:select => ["`component_instances`.*, max(`users`.id = ? AND `permissions`.view = 1) AS user_view, max(`users`.id = ? AND `permissions`.edit = 1) AS user_edit", user.id]

Запрос предназначен для того, чтобы указать мне, есть ли у конкретного пользователя явные разрешения для определенного элемента на сайте. Он либо вернет 1 (они делают), 0 (они не делают, но другие делают), либо ноль (никто не имеет явных разрешений).

1 Ответ

2 голосов
/ 06 июля 2011

Оказывается, вы можете вручную использовать метод sanitize_sql_array, чтобы сделать это:

:select => sanitize_sql_array(["`component_instances`.*, max(`users`.id = ? AND `permissions`.view = 1) AS user_view, max(`users`.id = ? AND `permissions`.edit = 1) AS user_edit", user.id, user.id])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...