Module: YiffSpace::Extensions::ActiveRecord::Unnest

Defined in:
lib/yiffspace/extensions/active_record/unnest.rb

Instance Method Summary collapse

Instance Method Details

#unnest(column, as: column.singularize, type: :left_join_lateral) ⇒ Object

Raises:

  • (ArgumentError)


7
8
9
10
11
# File 'lib/yiffspace/extensions/active_record/unnest.rb', line 7

def unnest(column, as: column.singularize, type: :left_join_lateral)
  raise(ArgumentError, "The method .unnest() must contain arguments.") if column.nil?

  spawn.unnest!(column, as, type)
end

#unnest!(column, name, type) ⇒ Object

:nodoc:



13
14
15
16
# File 'lib/yiffspace/extensions/active_record/unnest.rb', line 13

def unnest!(column, name, type) # :nodoc:
  function = ::Arel::Nodes::NamedFunction.new("unnest", [klass.arel_table[column]]).as(name)
  spawn.send("#{type}!", function, **({ on: ::Arel.sql("TRUE") } if type == :left_join_lateral))
end