mirror of
https://github.com/samsonjs/grape-active_model_serializers.git
synced 2026-03-25 08:45:55 +00:00
Added the ability to turn off serializer inference
This commit is contained in:
parent
d3db8672ab
commit
65f6980dad
2 changed files with 22 additions and 7 deletions
|
|
@ -4,10 +4,12 @@ module Grape
|
|||
module Formatter
|
||||
module ActiveModelSerializers
|
||||
class << self
|
||||
|
||||
attr_accessor :infer_serializers
|
||||
attr_reader :env
|
||||
attr_reader :endpoint
|
||||
|
||||
ActiveModelSerializers.infer_serializers = true
|
||||
|
||||
def call(object, env)
|
||||
@object = object
|
||||
@env = env
|
||||
|
|
@ -22,19 +24,17 @@ module Grape
|
|||
end
|
||||
|
||||
private
|
||||
def active_model_serializer
|
||||
_active_model_serializer
|
||||
end
|
||||
|
||||
def active_model_serializer?
|
||||
!!active_model_serializer
|
||||
end
|
||||
|
||||
def _active_model_serializer
|
||||
def active_model_serializer
|
||||
route_options = endpoint.options[:route_options]
|
||||
|
||||
# Infer serializer name if its not set
|
||||
route_options[:serializer] = @object.class.name unless route_options.has_key? :serializer
|
||||
if self.infer_serializers
|
||||
route_options[:serializer] = @object.class.name unless route_options.has_key? :serializer
|
||||
end
|
||||
|
||||
serializer = route_options[:serializer]
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,21 @@ describe Grape::ActiveModelSerializers do
|
|||
last_response.body.should == '{:user=>{:first_name=>"JR", :last_name=>"HE"}}'
|
||||
end
|
||||
|
||||
context "serializer inference is disabled" do
|
||||
before do
|
||||
Grape::Formatter::ActiveModelSerializers.infer_serializers = false
|
||||
end
|
||||
|
||||
it "should NOT infer serializer when there is no serializer set" do
|
||||
subject.get("/home") do
|
||||
User.new({first_name: 'JR', last_name: 'HE', email: 'contact@jrhe.co.uk'})
|
||||
end
|
||||
|
||||
get "/home"
|
||||
last_response.body.should == "{\"user\":{\"created_at\":null,\"first_name\":\"JR\",\"id\":null,\"last_name\":\"HE\",\"updated_at\":null,\"username\":null}}"
|
||||
end
|
||||
end
|
||||
|
||||
[UserSerializer, 'user', :user].each do |serializer|
|
||||
it "should render using serializer (#{serializer})" do
|
||||
subject.get("/home", serializer: serializer) do
|
||||
|
|
|
|||
Loading…
Reference in a new issue