Class: ForestLiana::HasManyGetter
Instance Method Summary
collapse
Methods inherited from BaseGetter
#get_collection, #get_resource
Constructor Details
#initialize(resource, association, params) ⇒ HasManyGetter
Returns a new instance of HasManyGetter.
3
4
5
6
7
8
9
|
# File 'app/services/forest_liana/has_many_getter.rb', line 3
def initialize(resource, association, params)
@resource = resource
@association = association
@params = params
@field_names_requested = field_names_requested
@collection = get_collection(ForestLiana.name_for(model_association))
end
|
Instance Method Details
#count ⇒ Object
50
51
52
|
# File 'app/services/forest_liana/has_many_getter.rb', line 50
def count
@records.to_a.length
end
|
#includes ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'app/services/forest_liana/has_many_getter.rb', line 25
def includes
@association.klass
.reflect_on_all_associations
.select do |association|
inclusion = !association.options[:polymorphic] &&
SchemaUtils.model_included?(association.klass) &&
[:belongs_to, :has_and_belongs_to_many].include?(association.macro)
if @field_names_requested
inclusion && @field_names_requested.include?(association.name)
else
inclusion
end
end
.map { |association| association.name.to_s }
end
|
11
12
13
14
15
16
17
18
|
# File 'app/services/forest_liana/has_many_getter.rb', line 11
def perform
@records = get_resource()
.find(@params[:id])
.send(@params[:association_name])
.eager_load(includes)
@records = search_query
@records = sort_query
end
|
#query_for_batch ⇒ Object
42
43
44
|
# File 'app/services/forest_liana/has_many_getter.rb', line 42
def query_for_batch
@records
end
|
#records ⇒ Object
46
47
48
|
# File 'app/services/forest_liana/has_many_getter.rb', line 46
def records
@records.limit(limit).offset(offset)
end
|
#search_query ⇒ Object
20
21
22
23
|
# File 'app/services/forest_liana/has_many_getter.rb', line 20
def search_query
includesSymbols = includes.map { |association| association.to_sym }
SearchQueryBuilder.new(@records, @params, includesSymbols, @collection).perform
end
|