diff --git a/grape-active_model_serializers.gemspec b/grape-active_model_serializers.gemspec index 2858c92..fc68ea4 100644 --- a/grape-active_model_serializers.gemspec +++ b/grape-active_model_serializers.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |gem| gem.licenses = ['MIT'] gem.add_dependency "grape", "~> 0.3" - gem.add_dependency "active_model_serializers", ">= 0.8.1" + gem.add_dependency "active_model_serializers", ">= 0.9.0.alpha1" gem.add_development_dependency "rspec" gem.add_development_dependency "rack-test" diff --git a/lib/grape-active_model_serializers/formatter.rb b/lib/grape-active_model_serializers/formatter.rb index 6f605dc..49b3c19 100644 --- a/lib/grape-active_model_serializers/formatter.rb +++ b/lib/grape-active_model_serializers/formatter.rb @@ -16,28 +16,27 @@ module Grape endpoint = env['api.endpoint'] options = build_options_from_endpoint(endpoint) - if resource.respond_to?(:to_ary) && !resource.empty? - # ensure we have an root to fallback on - endpoint.controller_name = default_root(endpoint) + if serializer = options.fetch(:serializer, ActiveModel::Serializer.serializer_for(resource)) + options[:scope] = serialization_scope unless options.has_key?(:scope) + if resource.respond_to?(:to_ary) && !resource.empty? + # ensure we have an root to fallback on + options[:resource_name] = default_root(endpoint) + end + serializer.new(resource, options.merge(other_options)) end - - ::ActiveModel::Serializer.build_json(endpoint, - resource, - options.merge(other_options) - ) end def other_options options = {} if @meta_content_items - meta_option = @meta_content_items[:meta] - @meta_content_items.delete(:meta) - options[:meta] = meta_option if meta_option if @meta_key key_option = @meta_key[:meta_key] @meta_key.delete(:meta_key) options[:meta_key] = key_option if key_option end + meta_option = @meta_content_items[:meta] + @meta_content_items.delete(:meta) + options[key_option || :meta] = meta_option if meta_option end options end @@ -73,6 +72,10 @@ module Grape endpoint.options[:path][0].to_s.split('/')[-1] end end + + def serialization_scope + :current_user + end end end end