Spec-Zone.ru › Ruby on Rails 4.2

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

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

quote(value, column = nil) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 9
def quote(value, column = nil)
  # records are quoted as their primary key
  return value.quoted_id if value.respond_to?(:quoted_id)

  if column
    value = column.cast_type.type_cast_for_database(value)
  end

  _quote(value)
end

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

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

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

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

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

quote_table_name(table_name) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 50
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 62
def quote_table_name_for_assignment(table, attr)
  quote_table_name("#{table}.#{attr}")
end

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

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

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

quoted_date(value) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 82
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

  value.to_s(:db)
end
quoted_false() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 74
def quoted_false
  "'f'"
end
quoted_true() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 66
def quoted_true
  "'t'"
end
type_cast(value, column) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 23
def type_cast(value, column)
  if value.respond_to?(:quoted_id) && value.respond_to?(:id)
    return value.id
  end

  if column
    value = column.cast_type.type_cast_for_database(value)
  end

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

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

unquoted_false() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 78
def unquoted_false
  'f'
end
unquoted_true() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/quoting.rb, line 70
def unquoted_true
  't'
end

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

Spec-Zone.ru

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