class Apiphobic::Authorization::Transformers::JsonApiToRailsAttributes

Attributes

parameters[RW]

Public Class Methods

new(parameters:) click to toggle source
# File lib/apiphobic/authorization/transformers/json_api_to_rails_attributes.rb, line 11
def initialize(parameters:)
  self.parameters = parameters
end

Public Instance Methods

call() click to toggle source
# File lib/apiphobic/authorization/transformers/json_api_to_rails_attributes.rb, line 15
def call
  attributes.merge(relationship_attributes)
end

Private Instance Methods

attributes() click to toggle source
# File lib/apiphobic/authorization/transformers/json_api_to_rails_attributes.rb, line 21
def attributes
  @attributes = parameters
                  .fetch(:data,       {})
                  .fetch(:attributes, parameters_class.new)
end
parameters_class() click to toggle source
# File lib/apiphobic/authorization/transformers/json_api_to_rails_attributes.rb, line 45
def parameters_class
  parameters.class
end
relationship_attributes() click to toggle source
# File lib/apiphobic/authorization/transformers/json_api_to_rails_attributes.rb, line 33
def relationship_attributes
  parameters_class.new.tap do |relationship_attributes|
    relationships.each_pair do |name, relationship|
      relationship_attributes.merge!(JsonApi::Relationship
                                       .new(name: name, data: relationship)
                                       .to_rails_attributes)
    end

    relationship_attributes.permit! if relationship_attributes.respond_to?(:permit!)
  end
end
relationships() click to toggle source
# File lib/apiphobic/authorization/transformers/json_api_to_rails_attributes.rb, line 27
def relationships
  @relationships = parameters
                     .fetch(:data,          {})
                     .fetch(:relationships, parameters_class.new)
end