From dfffe7dbc3c0d2923b4ce61bbbcb53933a243c4a Mon Sep 17 00:00:00 2001 From: Maros Hluska Date: Sun, 29 Apr 2018 14:07:05 -0700 Subject: [PATCH] Add deep_transform option --- lib/restful/jsonapi/restify_param.rb | 15 ++++++++------- lib/restful/jsonapi/version.rb | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/restful/jsonapi/restify_param.rb b/lib/restful/jsonapi/restify_param.rb index e8d466e..17df34a 100644 --- a/lib/restful/jsonapi/restify_param.rb +++ b/lib/restful/jsonapi/restify_param.rb @@ -3,13 +3,13 @@ module Jsonapi module RestifyParam extend ActiveSupport::Concern - def restify_param(param_key) - ActionController::Parameters.new(param_key => restify_data(param_key)) + def restify_param(param_key, options = {}) + ActionController::Parameters.new(param_key => restify_data(param_key, options)) end private - def restify_data(param_key, value = params) + def restify_data(param_key, value: params, deep_transform: false) if value == params value = params.clone[:data] # leave params alone end @@ -25,8 +25,9 @@ def restify_data(param_key, value = params) # attributes attributes = value.has_key?(:attributes) ? value[:attributes] : value attributes = attributes.merge(id: value[:id]) if value[:id] - attributes.transform_keys!(&:underscore) - new_params = new_params.merge(attributes.to_unsafe_h) + attributes = attributes.to_unsafe_h + attributes = deep_transform ? attributes.deep_transform_keys(&:underscore) : attributes.transform_keys(&:underscore) + new_params = new_params.merge(attributes) new_params end @@ -41,7 +42,7 @@ def restify_relationship(relationship_name, relationship_data) def restify_belongs_to(relationship_name, relationship_data) if relationship_data[:data].present? and relationship_data[:data].values_at(:attributes,:relationships).compact.length > 0 relationship_key = relationship_name.to_s.underscore+"_attributes" - {relationship_key => restify_data(relationship_name,relationship_data[:data])} + {relationship_key => restify_data(relationship_name, value: relationship_data[:data])} else if relationship_data[:data].nil? || relationship_data[:data].empty? {"#{relationship_name.underscore}_id" => nil} @@ -64,7 +65,7 @@ def restify_has_many(relationship_name, relationship_data) relationship_key = relationship_name.to_s.underscore+"_attributes" relationship = [] relationship_data[:data].each do |vv| - relationship.push restify_data(relationship_name,vv) + relationship.push restify_data(relationship_name, value: vv) end {relationship_key => relationship} end diff --git a/lib/restful/jsonapi/version.rb b/lib/restful/jsonapi/version.rb index 58c43f2..2037dde 100644 --- a/lib/restful/jsonapi/version.rb +++ b/lib/restful/jsonapi/version.rb @@ -1,5 +1,5 @@ module Restful module Jsonapi - VERSION = "1.0.6" + VERSION = "1.1.0" end end