Module: Jsonapi::Include::ClassMethods

Defined in:
lib/jsonapi/scopes/includes.rb

Instance Method Summary collapse

Instance Method Details

#allowed_includes(*fields) ⇒ Object



12
13
14
# File 'lib/jsonapi/scopes/includes.rb', line 12

def allowed_includes(*fields)
  @allowed_includes = fields
end

#apply_include(params = {}, options = { allowed: [] }) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/jsonapi/scopes/includes.rb', line 16

def apply_include(params = {}, options = { allowed: [] })
  records = all
  fields = params.dig(:include).to_s

  return records if fields.blank?

  allowed_fields = (Array.wrap(options[:allowed]).presence || @allowed_includes).map(&:to_s)

  fields.split(',').each do |field|
    raise InvalidAttributeError, "#{field} is not valid as include attribute." unless allowed_fields.include?(field)
  end

  records.includes(convert_includes_as_hash(fields))
end