Class: ParamsReady::Query::JoinCondition
- Inherits:
-
Object
- Object
- ParamsReady::Query::JoinCondition
- Defined in:
- lib/params_ready/query/join_clause.rb
Instance Method Summary collapse
- #eq(expression, arel_table: nil) ⇒ Object
-
#initialize(expression, arel_table: nil) ⇒ JoinCondition
constructor
A new instance of JoinCondition.
- #to_arel(base_table, join_table, context, parameter) ⇒ Object
Constructor Details
#initialize(expression, arel_table: nil) ⇒ JoinCondition
Returns a new instance of JoinCondition.
61 62 63 64 65 |
# File 'lib/params_ready/query/join_clause.rb', line 61 def initialize(expression, arel_table: nil) @on = Helpers::ArelBuilder.instance(expression, arel_table: arel_table) @to = nil @op = nil end |
Instance Method Details
#eq(expression, arel_table: nil) ⇒ Object
67 68 69 70 71 |
# File 'lib/params_ready/query/join_clause.rb', line 67 def eq(expression, arel_table: nil) raise ParamsReadyError, "Operator already set" unless @op.nil? @op = :eq @to = Helpers::ArelBuilder.instance(expression, arel_table: arel_table) end |
#to_arel(base_table, join_table, context, parameter) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/params_ready/query/join_clause.rb', line 73 def to_arel(base_table, join_table, context, parameter) if @to.nil? grouping = @on.to_arel(:none, context, parameter) return grouping if grouping.is_a? Arel::Nodes::Node Arel::Nodes::Grouping.new(grouping) else lhs = @on.to_arel(base_table, context, parameter) rhs = @to.to_arel(join_table, context, parameter) lhs.send(@op, rhs) end end |