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