Module: ActiveRecord::ConnectionAdapters::MySQL::Quoting

Included in:
AbstractMysqlAdapter
Defined in:
lib/active_record/connection_adapters/mysql/quoting.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#column_name_matcherObject



72
73
74
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 72

def column_name_matcher
  COLUMN_NAME
end

#column_name_with_order_matcherObject



76
77
78
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 76

def column_name_with_order_matcher
  COLUMN_NAME_WITH_ORDER
end

#quote_bound_value(value) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 9

def quote_bound_value(value)
  case value
  when Numeric
    quote(value.to_s)
  when BigDecimal
    quote(value.to_s("F"))
  when true
    "'1'"
  when false
    "'0'"
  else
    quote(value)
  end
end

#quote_column_name(name) ⇒ Object



24
25
26
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 24

def quote_column_name(name)
  self.class.quoted_column_names[name] ||= "`#{super.gsub('`', '``')}`"
end

#quote_table_name(name) ⇒ Object



28
29
30
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 28

def quote_table_name(name)
  self.class.quoted_table_names[name] ||= super.gsub(".", "`.`").freeze
end

#quoted_binary(value) ⇒ Object



48
49
50
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 48

def quoted_binary(value)
  "x'#{value.hex}'"
end

#quoted_date(value) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 40

def quoted_date(value)
  if supports_datetime_with_precision?
    super
  else
    super.sub(/\.\d{6}\z/, "")
  end
end

#type_cast(value) ⇒ Object

Override type_cast we pass to mysql2 Date and Time objects instead of Strings since mysql2 is able to handle those classes more efficiently.



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 54

def type_cast(value) # :nodoc:
  case value
  when ActiveSupport::TimeWithZone
    # We need to check explicitly for ActiveSupport::TimeWithZone because
    # we need to transform it to Time objects but we don't want to
    # transform Time objects to themselves.
    if ActiveRecord.default_timezone == :utc
      value.getutc
    else
      value.getlocal
    end
  when Date, Time
    value
  else
    super
  end
end

#unquoted_falseObject



36
37
38
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 36

def unquoted_false
  0
end

#unquoted_trueObject



32
33
34
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 32

def unquoted_true
  1
end