class EasyOrderable::Joiner

Attributes

args[R]
custom_association_names[R]
relation[R]

Public Class Methods

new(relation, args, custom_association_names) click to toggle source
# File lib/easy_orderable/joiner.rb, line 3
def initialize(relation, args, custom_association_names)
  @relation = relation
  @args = args
  @custom_association_names = custom_association_names
end

Public Instance Methods

call() click to toggle source
# File lib/easy_orderable/joiner.rb, line 9
def call
  association_names = get_association_names
  association_names.present? ? relation.joins(*association_names) : relation
end

Private Instance Methods

get_association_names() click to toggle source
# File lib/easy_orderable/joiner.rb, line 18
def get_association_names
  table_names.map do |name|
    if custom_association_names&.key?(name)
      custom_association_names[name].to_sym
    else
      name
    end
  end
end
table_names() click to toggle source
# File lib/easy_orderable/joiner.rb, line 28
def table_names
  args
    .keys
    .select{ |e| e.include?('.') }
    .map { |e| e.split('.').first.to_sym }
end