support active model serializer 0.9.x

This commit is contained in:
Stephane Bounmy 2014-06-29 22:18:08 +02:00
parent cfc6a02c65
commit e30af569b2
2 changed files with 15 additions and 12 deletions

View file

@ -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"

View file

@ -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