Class: CustomSort::MagicNew::Relation

Inherits:
CustomSort::MagicNew show all
Defined in:
lib/custom_sort/magic_new.rb

Instance Attribute Summary

Attributes inherited from CustomSort::MagicNew

#label, #options, #query_name, #recency_key, #recent, #sort_order

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from CustomSort::MagicNew

validate_period

Constructor Details

#initialize(**options) ⇒ Relation

Returns a new instance of Relation.



41
42
43
44
# File 'lib/custom_sort/magic_new.rb', line 41

def initialize(**options)
  super(**options.reject { |k, _| [:default_value, :carry_forward, :last, :current].include?(k) })
  @options = options
end

Class Method Details

.generate_relation(relation, field: nil, **options) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/custom_sort/magic_new.rb', line 46

def self.generate_relation(relation, field: nil, **options)
  magic = CustomSort::MagicNew::Relation.new(**options)

  # generate ActiveRecord relation
  relation =
    RelationBuilder.new(
      relation,
      column: field,
      query_name: magic.query_name,
      recent: magic.recent,
      recency_key: magic.recency_key,
      label: magic.label,
      sort_order: magic.sort_order
    ).generate

  relation

end

.process_result(relation, result, **options) ⇒ Object

allow any options to keep flexible for future



66
67
68
69
70
71
# File 'lib/custom_sort/magic_new.rb', line 66

def self.process_result(relation, result, **options)
  relation.customsort_values.reverse.each do |gv|
    result = gv.perform(relation, result, default_value: options[:default_value])
  end
  result
end