Spec-Zone.ru › Ruby on Rails 5.2

модуль ActiveRecord::ConnectionAdapters::Quoting

Общедоступные методы экземпляров

quote(value) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 11
def quote(value)
  value = id_value_for_database(value) if value.is_a?(Base)

  if value.respond_to?(:value_for_database)
    value = value.value_for_database
  end

  _quote(value)
end

Приводит значение столбца к кавычкам, чтобы предотвратить атаки SQL-инъекции.

quote_column_name(column_name) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 67
def quote_column_name(column_name)
  column_name.to_s
end

Приводит имя столбца к кавычкам. По умолчанию кавычки не используются.

quote_string(s) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 62
def quote_string(s)
  s.gsub('\\'.freeze, '\&\&'.freeze).gsub("'".freeze, "''".freeze) # ' (for ruby-mode)
end

Приводит строку к кавычкам, экранируя символы ' (одинарная кавычка) и \ (обратный слэш).

quote_table_name(table_name) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 72
def quote_table_name(table_name)
  quote_column_name(table_name)
end

Приводит имя таблицы к кавычкам. По умолчанию используется приведение имени столбца к кавычкам.

quote_table_name_for_assignment(table, attr) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 84
def quote_table_name_for_assignment(table, attr)
  quote_table_name("#{table}.#{attr}")
end

Переопределяет метод для возвращения имени таблицы в кавычках для присваивания. По умолчанию используется приведение имени таблицы к кавычкам.

Это работает для mysql2, где table.column может использоваться для разрешения неоднозначности.

Мы переопределяем это в адаптерах sqlite3 и postgresql, чтобы использовать только имя столбца (согласно требованиям синтаксиса).

quoted_date(value) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 115
def quoted_date(value)
  if value.acts_like?(:time)
    zone_conversion_method = ActiveRecord::Base.default_timezone == :utc ? :getutc : :getlocal

    if value.respond_to?(zone_conversion_method)
      value = value.send(zone_conversion_method)
    end
  end

  result = value.to_s(:db)
  if value.respond_to?(:usec) && value.usec > 0
    "#{result}.#{sprintf("%06d", value.usec)}"
  else
    result
  end
end

Приводит значения даты/времени к кавычкам для использования в SQL-вводе. Включает микросекунды, если значение является объектом Time, поддерживающим usec.

quoted_false() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 105
def quoted_false
  "FALSE".freeze
end
quoted_true() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 97
def quoted_true
  "TRUE".freeze
end
type_cast(value, column = nil) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 24
def type_cast(value, column = nil)
  value = id_value_for_database(value) if value.is_a?(Base)

  if column
    value = type_cast_from_column(column, value)
  end

  _type_cast(value)
rescue TypeError
  to_type = column ? " to #{column.type}" : ""
  raise TypeError, "can't cast #{value.class}#{to_type}"
end

Преобразует value в тип, понятный базе данных. Например, SQLite не понимает даты, поэтому этот метод преобразует Date в String.

unquoted_false() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 109
def unquoted_false
  false
end
unquoted_true() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 101
def unquoted_true
  true
end

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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