class ParamsReady::Query::JoinCondition

Public Class Methods

new(expression, arel_table: nil) click to toggle source
# 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

Public Instance Methods

eq(expression, arel_table: nil) click to toggle source
# 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) click to toggle source
# 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