Class: ParamsReady::Query::JoinCondition

Inherits:
Object
  • Object
show all
Defined in:
lib/params_ready/query/join_clause.rb

Instance Method Summary collapse

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

Raises:



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