Module: ArelAssist
- Extended by:
- ArelAssist
- Included in:
- ArelAssist
- Defined in:
- lib/arel_assist.rb,
lib/arel_assist/version.rb
Constant Summary collapse
- VERSION =
"0.1.0"
Class Method Summary collapse
Instance Method Summary collapse
-
#arel_count(field) ⇒ Arel::Nodes::NamedFunction
Generates SQL: COUNT("
"." "). -
#arel_date_trunc(date_part, field) ⇒ Arel::Nodes::NamedFunction
Generates SQL: date_trunc('
', " "." "). -
#arel_max(field) ⇒ Arel::Nodes::NamedFunction
Generates SQL: MAX("
"." "). -
#arel_min(field) ⇒ Arel::Nodes::NamedFunction
Generates SQL: MIN("
"." "). - #sqlv(node) ⇒ Object
Class Method Details
.included(base) ⇒ Object
9 10 11 |
# File 'lib/arel_assist.rb', line 9 def self.included(base) base.extend self end |
Instance Method Details
#arel_count(field) ⇒ Arel::Nodes::NamedFunction
Generates SQL: COUNT("
21 22 23 |
# File 'lib/arel_assist.rb', line 21 def arel_count(field) Arel::Nodes::NamedFunction.new("COUNT", [field]) end |
#arel_date_trunc(date_part, field) ⇒ Arel::Nodes::NamedFunction
Generates SQL: date_trunc('
34 35 36 |
# File 'lib/arel_assist.rb', line 34 def arel_date_trunc(date_part, field) Arel::Nodes::NamedFunction.new("date_trunc", [sqlv(date_part), field]) end |
#arel_max(field) ⇒ Arel::Nodes::NamedFunction
Generates SQL: MAX("
46 47 48 |
# File 'lib/arel_assist.rb', line 46 def arel_max(field) Arel::Nodes::NamedFunction.new("MAX", [field]) end |
#arel_min(field) ⇒ Arel::Nodes::NamedFunction
Generates SQL: MIN("
62 63 64 |
# File 'lib/arel_assist.rb', line 62 def arel_min(field) Arel::Nodes::NamedFunction.new("MIN", [field]) end |
#sqlv(node) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/arel_assist.rb', line 66 def sqlv(node) case node when ->(n) { n.respond_to?(:to_sql) } node.to_sql when Arel::Attributes::Attribute Arel::Nodes::SqlLiteral.new("\"#{node.relation.name}\".\"#{node.name}\"") when Array, Range value = node.map { |x| x.is_a?(String) ? "'#{x}'" : x }.join(",") Arel::Nodes::SqlLiteral.new "ARRAY[#{value}]" when Time, DateTime, Date, String Arel::Nodes.build_quoted node else Arel::Nodes::SqlLiteral.new node.to_s end end |