Spec-Zone.ru › Ruby on Rails 7.1

модуль Arel

Константы

VERSION

Методы публичного класса

sql(sql_string, *positional_binds, **named_binds) Показать исходный код
# 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.

Spec-Zone.ru

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