Module: Models::SearchableView::ClassMethods

Defined in:
app/concerns/models/searchable_view.rb

Instance Method Summary collapse

Instance Method Details

#append_rep_condition(rep_key, reps) ⇒ Object

A helper method for classic rep conditions



37
38
39
40
41
42
43
# File 'app/concerns/models/searchable_view.rb', line 37

def append_rep_condition(rep_key, reps)
  rep_ids = [reps.dup].flatten.compact.uniq
  rep_conditions = []
  rep_conditions << "#{rep_key} IS NULL" if rep_ids.delete('Unassigned')
  rep_conditions << "#{rep_key} IN (#{rep_ids.map(&:to_i).join(',')})" if rep_ids.present?
  where(rep_conditions.map { |c| "(#{c})" }.join(' OR '))
end

#main_resource_classObject



45
46
47
# File 'app/concerns/models/searchable_view.rb', line 45

def main_resource_class
  name.match(/View(.+)/)[1]
end

#main_resource_tableObject



49
50
51
# File 'app/concerns/models/searchable_view.rb', line 49

def main_resource_table
  main_resource_class.tableize
end

#ransackable_scopes(_auth_object = nil) ⇒ Object

Expose rep includes scopes to Ransack so they are callable via ransack(query_params).
Each scope is generated conditionally based on which rep columns the view has.



59
60
61
62
63
64
# File 'app/concerns/models/searchable_view.rb', line 59

def ransackable_scopes(_auth_object = nil)
  %i[primary_sales_rep_id_includes secondary_sales_rep_id_includes
     local_sales_rep_id_includes service_rep_id_includes
     technical_support_rep_id_includes opportunity_local_sales_rep_id_includes
     customer_local_sales_rep_id_includes]
end

#select_sort_columnsObject



53
54
55
# File 'app/concerns/models/searchable_view.rb', line 53

def select_sort_columns
  column_names.sort.map { |cn| [human_attribute_name(cn), cn] }
end