модуль Arel
Константы
- VERSION
Методы публичного класса
# File activerecord/lib/arel.rb, line 48
def self.sql(sql_string, *positional_binds, **named_binds)
if positional_binds.empty? && named_binds.empty?
Arel::Nodes::SqlLiteral.new sql_string
else
Arel::Nodes::BoundSqlLiteral.new sql_string, positional_binds, named_binds
end
end Оборачивает известную безопасную строку SQL для передачи методам запроса, например:
Post.order(Arel.sql("REPLACE(title, 'misc', 'zzzz') asc")).pluck(:id)
Следует соблюдать особую осторожность, чтобы избежать уязвимостей SQL-инъекции. Этот метод не следует использовать с небезопасными значениями, такими как параметры запроса или атрибуты модели.
Дополнительную информацию можно найти в руководстве по безопасности.
Для построения более сложного фрагмента запроса, включая возможные значения, предоставленные пользователем, sql_string может содержать ? и :key заполнительные элементы, соответствующие дополнительным аргументам. Обратите внимание, что это поведение применяется только при предоставлении параметров значения bind в вызове; без них маркеры-заполнители не имеют специального значения и будут переданы в запрос как есть.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.