Module: Arel

Defined in:
activerecord/lib/arel/crud.rb,
activerecord/lib/arel.rb,
activerecord/lib/arel/math.rb,
activerecord/lib/arel/table.rb,
activerecord/lib/arel/errors.rb,
activerecord/lib/arel/nodes/in.rb,
activerecord/lib/arel/visitors.rb,
activerecord/lib/arel/nodes/and.rb,
activerecord/lib/arel/nodes/case.rb,
activerecord/lib/arel/nodes/node.rb,
activerecord/lib/arel/nodes/over.rb,
activerecord/lib/arel/nodes/true.rb,
activerecord/lib/arel/nodes/with.rb,
activerecord/lib/arel/expressions.rb,
activerecord/lib/arel/nodes/count.rb,
activerecord/lib/arel/nodes/false.rb,
activerecord/lib/arel/nodes/unary.rb,
activerecord/lib/arel/nodes/binary.rb,
activerecord/lib/arel/nodes/casted.rb,
activerecord/lib/arel/nodes/regexp.rb,
activerecord/lib/arel/nodes/window.rb,
activerecord/lib/arel/predications.rb,
activerecord/lib/arel/tree_manager.rb,
activerecord/lib/arel/visitors/dot.rb,
activerecord/lib/arel/nodes/comment.rb,
activerecord/lib/arel/nodes/extract.rb,
activerecord/lib/arel/nodes/matches.rb,
activerecord/lib/arel/delete_manager.rb,
activerecord/lib/arel/insert_manager.rb,
activerecord/lib/arel/nodes/equality.rb,
activerecord/lib/arel/nodes/function.rb,
activerecord/lib/arel/nodes/grouping.rb,
activerecord/lib/arel/nodes/terminal.rb,
activerecord/lib/arel/select_manager.rb,
activerecord/lib/arel/update_manager.rb,
activerecord/lib/arel/visitors/mssql.rb,
activerecord/lib/arel/visitors/mysql.rb,
activerecord/lib/arel/collectors/bind.rb,
activerecord/lib/arel/factory_methods.rb,
activerecord/lib/arel/nodes/ascending.rb,
activerecord/lib/arel/visitors/ibm_db.rb,
activerecord/lib/arel/visitors/oracle.rb,
activerecord/lib/arel/visitors/sqlite.rb,
activerecord/lib/arel/visitors/to_sql.rb,
activerecord/lib/arel/nodes/bind_param.rb,
activerecord/lib/arel/nodes/descending.rb,
activerecord/lib/arel/nodes/inner_join.rb,
activerecord/lib/arel/nodes/outer_join.rb,
activerecord/lib/arel/visitors/visitor.rb,
activerecord/lib/arel/alias_predication.rb,
activerecord/lib/arel/nodes/join_source.rb,
activerecord/lib/arel/nodes/select_core.rb,
activerecord/lib/arel/nodes/sql_literal.rb,
activerecord/lib/arel/nodes/string_join.rb,
activerecord/lib/arel/nodes/table_alias.rb,
activerecord/lib/arel/nodes/values_list.rb,
activerecord/lib/arel/visitors/informix.rb,
activerecord/lib/arel/visitors/oracle12.rb,
activerecord/lib/arel/order_predications.rb,
activerecord/lib/arel/visitors/where_sql.rb,
activerecord/lib/arel/visitors/postgresql.rb,
activerecord/lib/arel/window_predications.rb,
activerecord/lib/arel/attributes/attribute.rb,
activerecord/lib/arel/collectors/composite.rb,
activerecord/lib/arel/nodes/named_function.rb,
activerecord/lib/arel/collectors/sql_string.rb,
activerecord/lib/arel/nodes/full_outer_join.rb,
activerecord/lib/arel/nodes/infix_operation.rb,
activerecord/lib/arel/nodes/node_expression.rb,
activerecord/lib/arel/nodes/unary_operation.rb,
activerecord/lib/arel/nodes/delete_statement.rb,
activerecord/lib/arel/nodes/insert_statement.rb,
activerecord/lib/arel/nodes/right_outer_join.rb,
activerecord/lib/arel/nodes/select_statement.rb,
activerecord/lib/arel/nodes/update_statement.rb,
activerecord/lib/arel/collectors/plain_string.rb,
activerecord/lib/arel/nodes/unqualified_column.rb,
activerecord/lib/arel/collectors/substitute_binds.rb

Overview

:nodoc: all

Defined Under Namespace

Modules: AliasPredication, Attributes, Collectors, Crud, Expressions, FactoryMethods, Math, Nodes, OrderPredications, Predications, Visitors, WindowPredications Classes: ArelError, DeleteManager, EmptyJoinError, InsertManager, SelectManager, Table, TreeManager, UpdateManager

Constant Summary collapse

VERSION =
"10.0.0"
Node =

Convenience Alias

Arel::Nodes::Node
Attribute =
Attributes::Attribute

Class Method Summary collapse

Class Method Details

.arel_node?(value) ⇒ Boolean

:nodoc:


45
46
47
# File 'activerecord/lib/arel.rb', line 45

def self.arel_node?(value) # :nodoc:
  value.is_a?(Arel::Node) || value.is_a?(Arel::Attribute) || value.is_a?(Arel::Nodes::SqlLiteral)
end

.fetch_attribute(value, &block) ⇒ Object

:nodoc:


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'activerecord/lib/arel.rb', line 49

def self.fetch_attribute(value, &block) # :nodoc:
  case value
  when Arel::Nodes::Between, Arel::Nodes::In, Arel::Nodes::NotIn, Arel::Nodes::Equality,
       Arel::Nodes::NotEqual, Arel::Nodes::LessThan, Arel::Nodes::LessThanOrEqual,
       Arel::Nodes::GreaterThan, Arel::Nodes::GreaterThanOrEqual
    if value.left.is_a?(Arel::Attributes::Attribute)
      yield value.left
    else
      yield value.right
    end
  when Arel::Nodes::Or
    fetch_attribute(value.left, &block) && fetch_attribute(value.right, &block)
  when Arel::Nodes::Grouping
    fetch_attribute(value.expr, &block)
  end
end

.sql(raw_sql) ⇒ Object

Wrap a known-safe SQL string for passing to query methods, e.g.

Post.order(Arel.sql("length(title)")).last

Great caution should be taken to avoid SQL injection vulnerabilities. This method should not be used with unsafe values such as request parameters or model attributes.


37
38
39
# File 'activerecord/lib/arel.rb', line 37

def self.sql(raw_sql)
  Arel::Nodes::SqlLiteral.new raw_sql
end

.starObject

:nodoc:


41
42
43
# File 'activerecord/lib/arel.rb', line 41

def self.star # :nodoc:
  sql "*"
end