class ActiveRecord::UnknownAttributeReference
UnknownAttributeReference возникает, когда методу запроса передаётся неизвестное и потенциально небезопасное значение. Например, передача значения, не являющегося именем столбца, в метод order отношения может вызвать это исключение.
При обходе этого исключения следует соблюдать осторожность, чтобы избежать уязвимостей, связанных с SQL-инъекциями, при передаче в методы запросов значений, предоставленных пользователем. Заведомо безопасные значения можно передавать методам запросов, обернув их в Arel.sql.
Например, следующий код вызовет это исключение:
Post.order("REPLACE(title, 'misc', 'zzzz') asc").pluck(:id)
Желаемого результата можно добиться, обернув заведомо безопасную строку в Arel.sql:
Post.order(Arel.sql("REPLACE(title, 'misc', 'zzzz') asc")).pluck(:id)
Повторим: такой обходной приём не следует использовать при передаче в методы запросов значений, предоставленных пользователем, например параметров запроса или атрибутов модели.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.