diff --git a/lib/active_model/serializer/adapter/json_api.rb b/lib/active_model/serializer/adapter/json_api.rb index ff081b80..6f43d5f3 100644 --- a/lib/active_model/serializer/adapter/json_api.rb +++ b/lib/active_model/serializer/adapter/json_api.rb @@ -44,13 +44,7 @@ module ActiveModel def initialize(serializer, options = {}) super @include_tree = IncludeTree.from_include_args(options[:include]) - - fields = options.delete(:fields) - if fields - @fieldset = ActiveModel::Serializer::Fieldset.new(fields) - else - @fieldset = options[:fieldset] - end + @fieldset = options[:fieldset] || ActiveModel::Serializer::Fieldset.new(options.delete(:fields)) end def serializable_hash(options = nil) @@ -175,7 +169,7 @@ module ActiveModel def relationships_for(serializer) resource_type = resource_identifier_type_for(serializer) - requested_associations = fieldset.try(:fields_for, resource_type) || '*' + requested_associations = fieldset.fields_for(resource_type) || '*' include_tree = IncludeTree.from_include_args(requested_associations) serializer.associations(include_tree).each_with_object({}) do |association, hash| hash[association.key] = { data: relationship_value_for(association.serializer, association.options) } diff --git a/lib/active_model/serializer/fieldset.rb b/lib/active_model/serializer/fieldset.rb index 4f2211df..efa3187c 100644 --- a/lib/active_model/serializer/fieldset.rb +++ b/lib/active_model/serializer/fieldset.rb @@ -2,7 +2,7 @@ module ActiveModel class Serializer class Fieldset def initialize(fields) - @raw_fields = fields + @raw_fields = fields || {} end def fields @@ -21,7 +21,7 @@ module ActiveModel def parsed_fields if raw_fields.is_a?(Hash) - raw_fields.inject({}) { |h, (k, v)| h[k.to_sym] = v.map(&:to_sym); h } + raw_fields.each_with_object({}) { |(k, v), h| h[k.to_sym] = v.map(&:to_sym) } else {} end