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

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

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#cast_bound_value(value) ⇒ Object



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

def cast_bound_value(value)
  case value
  when Rational
    value.to_f.to_s
  when Numeric
    value.to_s
  when BigDecimal
    value.to_s("F")
  when true
    "1"
  when false
    "0"
  when ActiveSupport::Duration
    warn_quote_duration_deprecated
    value.to_s
  else
    value
  end
end

#column_name_matcherObject



85
86
87
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 85

def column_name_matcher
  COLUMN_NAME
end

#column_name_with_order_matcherObject



89
90
91
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 89

def column_name_with_order_matcher
  COLUMN_NAME_WITH_ORDER
end

#quote_column_name(name) ⇒ Object



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

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

#quote_table_name(name) ⇒ Object



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

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

#quoted_binary(value) ⇒ Object



53
54
55
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 53

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

#quoted_date(value) ⇒ Object



45
46
47
48
49
50
51
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 45

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.



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 67

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 default_timezone == :utc
      value.getutc
    else
      value.getlocal
    end
  when Date, Time
    value
  else
    super
  end
end

#unquote_identifier(identifier) ⇒ Object



57
58
59
60
61
62
63
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 57

def unquote_identifier(identifier)
  if identifier && identifier.start_with?("`")
    identifier[1..-2]
  else
    identifier
  end
end

#unquoted_falseObject



41
42
43
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 41

def unquoted_false
  0
end

#unquoted_trueObject



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

def unquoted_true
  1
end