Module: Activerecord::Multirange::Quoting
- Defined in:
- lib/activerecord-multirange/quoting.rb
Instance Method Summary collapse
- #encode_multirange(range_data) ⇒ Object
- #quote(value) ⇒ Object
-
#quote_bound_value(value) ⇒ Object
Override quote_bound_value for newer Rails versions.
-
#quote_default_expression(value, column) ⇒ Object
Override for default expression quoting.
-
#quoted_literal(value) ⇒ Object
Override the bound value quoting for parameter binding in WHERE clauses.
-
#sanitize_sql_array(ary) ⇒ Object
Override sanitize_sql_array to catch arrays of ranges at parameter binding level.
- #type_cast(value) ⇒ Object
Instance Method Details
#encode_multirange(range_data) ⇒ Object
65 66 67 68 69 |
# File 'lib/activerecord-multirange/quoting.rb', line 65 def encode_multirange(range_data) collection = range_data.ranges.map { |r| encode_range(r) }.join(",") "{#{collection}}" end |
#quote(value) ⇒ Object
6 7 8 9 10 11 |
# File 'lib/activerecord-multirange/quoting.rb', line 6 def quote(value) return quote(encode_multirange(value)) if value.is_a?(::Activerecord::Multirange::OID::MultiRange::Data) return quote_array_as_multirange(value) if array_of_ranges?(value) super end |
#quote_bound_value(value) ⇒ Object
Override quote_bound_value for newer Rails versions
30 31 32 33 34 35 36 |
# File 'lib/activerecord-multirange/quoting.rb', line 30 def quote_bound_value(value) if array_of_ranges?(value) "'#{encode_array_as_multirange(value)}'" else super end end |
#quote_default_expression(value, column) ⇒ Object
Override for default expression quoting
39 40 41 42 43 44 45 |
# File 'lib/activerecord-multirange/quoting.rb', line 39 def quote_default_expression(value, column) if array_of_ranges?(value) "'#{encode_array_as_multirange(value)}'" else super end end |
#quoted_literal(value) ⇒ Object
Override the bound value quoting for parameter binding in WHERE clauses
21 22 23 24 25 26 27 |
# File 'lib/activerecord-multirange/quoting.rb', line 21 def quoted_literal(value) if array_of_ranges?(value) encode_array_as_multirange(value) else super end end |
#sanitize_sql_array(ary) ⇒ Object
Override sanitize_sql_array to catch arrays of ranges at parameter binding level
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/activerecord-multirange/quoting.rb', line 48 def sanitize_sql_array(ary) statement, *values = ary if statement.respond_to?(:to_str) # Convert arrays of ranges to multirange format in the values converted_values = values.map do |value| if array_of_ranges?(value) encode_array_as_multirange(value) else value end end sanitize_sql_for_conditions([statement, *converted_values]) else super end end |
#type_cast(value) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/activerecord-multirange/quoting.rb', line 13 def type_cast(value) return encode_multirange(value) if value.is_a?(::Activerecord::Multirange::OID::MultiRange::Data) return encode_array_as_multirange(value) if array_of_ranges?(value) super end |