class JoyfulJsonapi::Parameters

Public Class Methods

new(original_params) click to toggle source
# File lib/joyful_jsonapi/parameters.rb, line 7
def initialize(original_params)
  @jsonapi_params = original_params.to_unsafe_h.with_indifferent_access
  @rails_params = {_jsonapi_document: @jsonapi_params}.with_indifferent_access
end

Public Instance Methods

to_action_controller_params() click to toggle source
# File lib/joyful_jsonapi/parameters.rb, line 12
def to_action_controller_params
  populate_root_key
  extract_attributes
  extract_relationships
  finalize
end

Private Instance Methods

extract_attributes() click to toggle source
# File lib/joyful_jsonapi/parameters.rb, line 25
def extract_attributes
  @jsonapi_params[:data][:attributes].each do |k,v|
    rails_attribute_hash[k.underscore] = v
  end
end
extract_relationships() click to toggle source
# File lib/joyful_jsonapi/parameters.rb, line 31
def extract_relationships
  relationship_params = @jsonapi_params[:data][:relationships].dup
  rails_relationship_hash = {}
  (relationship_params || {}).each do |name, jsonapi_relationship_object|
    rails_relationship_hash["#{name.underscore}_id"] = jsonapi_relationship_object[:data][:id]
  end
  rails_attribute_hash.merge!(rails_relationship_hash)
end
finalize() click to toggle source
# File lib/joyful_jsonapi/parameters.rb, line 48
def finalize
  ActionController::Parameters.new(@rails_params)
end
populate_root_key() click to toggle source
# File lib/joyful_jsonapi/parameters.rb, line 21
def populate_root_key
  rails_attribute_hash
end
rails_attribute_hash() click to toggle source
# File lib/joyful_jsonapi/parameters.rb, line 40
def rails_attribute_hash
  @rails_params[type_key] ||= {} 
end
type_key() click to toggle source
# File lib/joyful_jsonapi/parameters.rb, line 44
def type_key
  @type_key ||= @jsonapi_params[:data][:type].singularize.underscore
end