class ParamsReady::Query::JoinStatement
Public Class Methods
new(on: nil, eq: nil, &block)
click to toggle source
# File lib/params_ready/query/join_clause.rb, line 29 def initialize(on: nil, eq: nil, &block) @conditions = [] if on condition = on(on) if eq condition.eq(eq) end else raise ParamsReadyError('Parameter :eq unexpected') unless eq.nil? end instance_eval(&block) unless block.nil? raise ParamsReadyError, "Join clause is empty" if @conditions.empty? end
Public Instance Methods
on(expression, arel_table: nil)
click to toggle source
# File lib/params_ready/query/join_clause.rb, line 44 def on(expression, arel_table: nil) condition = JoinCondition.new(expression, arel_table: arel_table) @conditions << condition condition end
to_arel(base_table, join_table, context, parameter)
click to toggle source
# File lib/params_ready/query/join_clause.rb, line 50 def to_arel(base_table, join_table, context, parameter) @conditions.reduce(nil) do |result, condition| arel = condition.to_arel(base_table, join_table, context, parameter) next arel if result.nil? result.and(arel) end end