Spec-Zone.ru › Ruby on Rails 8.1

class ActiveRecord::UnknownAttributeReference

Родительский класс:
ActiveRecord::ActiveRecordError

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API