Module: JSONAPI::Resources::AttributesDsl::FieldResolution

Defined in:
lib/json_api/resources/concerns/attributes_dsl.rb

Instance Method Summary collapse

Instance Method Details

#inherits_field?(ivar, method) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
# File 'lib/json_api/resources/concerns/attributes_dsl.rb', line 51

def inherits_field?(ivar, method)
  superclass != JSONAPI::Resource &&
    superclass.respond_to?(method) &&
    superclass.instance_variable_defined?(ivar)
end

#permitted_attributesObject



29
30
31
32
33
34
# File 'lib/json_api/resources/concerns/attributes_dsl.rb', line 29

def permitted_attributes
  declared_attributes = instance_variable_defined?(:@attributes)
  attrs = @attributes || []
  attrs = superclass.permitted_attributes + attrs if should_inherit_attributes?(declared_attributes)
  attrs.uniq
end

#permitted_creatable_fieldsObject



36
37
38
# File 'lib/json_api/resources/concerns/attributes_dsl.rb', line 36

def permitted_creatable_fields
  resolve_field_list(:@creatable_fields, :permitted_creatable_fields)
end

#permitted_updatable_fieldsObject



40
41
42
# File 'lib/json_api/resources/concerns/attributes_dsl.rb', line 40

def permitted_updatable_fields
  resolve_field_list(:@updatable_fields, :permitted_updatable_fields)
end

#resolve_field_list(ivar, method) ⇒ Object



44
45
46
47
48
49
# File 'lib/json_api/resources/concerns/attributes_dsl.rb', line 44

def resolve_field_list(ivar, method)
  return (instance_variable_get(ivar) || []).uniq if instance_variable_defined?(ivar)
  return superclass.public_send(method).uniq if inherits_field?(ivar, method)

  permitted_attributes.uniq
end

#should_inherit_attributes?(declared_attributes) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
60
61
# File 'lib/json_api/resources/concerns/attributes_dsl.rb', line 57

def should_inherit_attributes?(declared_attributes)
  !declared_attributes &&
    superclass != JSONAPI::Resource &&
    superclass.respond_to?(:permitted_attributes)
end