mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 15:23:06 +00:00
Make serializer lookup configurable (#1757)
This commit is contained in:
committed by
Yohan Robert
parent
d0de53cbb2
commit
d31d741f43
@@ -15,6 +15,16 @@ module ActionController
|
||||
end
|
||||
end
|
||||
|
||||
module VHeader
|
||||
class BookSerializer < ActiveModel::Serializer
|
||||
attributes :title, :body
|
||||
|
||||
def body
|
||||
'header'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
module V3
|
||||
class BookSerializer < ActiveModel::Serializer
|
||||
attributes :title, :body
|
||||
@@ -92,6 +102,14 @@ module ActionController
|
||||
book = Book.new(title: 'New Post', body: 'Body')
|
||||
render json: book
|
||||
end
|
||||
|
||||
def namespace_set_by_request_headers
|
||||
book = Book.new(title: 'New Post', body: 'Body')
|
||||
version_from_header = request.headers['X-API_VERSION']
|
||||
namespace = "ActionController::Serialization::NamespaceLookupTest::#{version_from_header}"
|
||||
|
||||
render json: book, namespace: namespace
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -102,6 +120,13 @@ module ActionController
|
||||
@test_namespace = self.class.parent
|
||||
end
|
||||
|
||||
test 'uses request headers to determine the namespace' do
|
||||
request.env['X-API_VERSION'] = 'Api::VHeader'
|
||||
get :namespace_set_by_request_headers
|
||||
|
||||
assert_serializer Api::VHeader::BookSerializer
|
||||
end
|
||||
|
||||
test 'implicitly uses namespaced serializer' do
|
||||
get :implicit_namespaced_serializer
|
||||
|
||||
|
||||
Reference in New Issue
Block a user