Module: JSONAPI::Param::InstanceMethods
- Defined in:
- lib/jsonapi-params/param.rb
Instance Method Summary collapse
-
#attributes ⇒ Hash
Handles parameters to return sanitized attributes and their relationships.
- #id ⇒ Object
- #initialize(params) ⇒ Object
-
#relationships ⇒ Hash
Handles parameters to return relationships.
- #type ⇒ Object
Instance Method Details
#attributes ⇒ Hash
Handles parameters to return sanitized attributes and their relationships
81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/jsonapi-params/param.rb', line 81 def attributes attributes = @data['attributes'] || {} attributes = attributes.slice(*self.class.whitelist_attributes) attributes = attributes.merge(relationships) collection_attributes = strong_parameters? ? attributes.to_unsafe_h : attributes.to_h collection_attributes.inject({}) do |attributes, (key, value)| attributes[key.to_s.underscore.to_sym] = value attributes end end |
#id ⇒ Object
68 69 70 |
# File 'lib/jsonapi-params/param.rb', line 68 def id @data['id'] end |
#initialize(params) ⇒ Object
60 61 62 63 64 |
# File 'lib/jsonapi-params/param.rb', line 60 def initialize(params) raise InvalidParam, 'Data is required' if params.nil? || params['data'].nil? @data = params['data'] end |
#relationships ⇒ Hash
Handles parameters to return relationships
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/jsonapi-params/param.rb', line 97 def relationships relationships = @data['relationships'] || {} relationships = relationships.slice(*self.class.whitelist_relationships) relationships.to_h.inject({}) do |relationships, (relationship_key, relationship_object)| data = relationship_object['data'] if data.is_a?(Array) raise 'One-to-many relationship is not supported' elsif data.is_a?(Hash) params = params_klass(relationship_key).new(relationship_object) relationships["#{relationship_key}_id".to_sym] = params.id end relationships end end |
#type ⇒ Object
74 75 76 |
# File 'lib/jsonapi-params/param.rb', line 74 def type @data['type'] end |