mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
Fix constant lookup when serializer is not available.
This commit is contained in:
parent
cc5f102e2d
commit
b9d56a5168
@ -5,14 +5,19 @@ module ActiveModel::SerializerSupport
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
module ClassMethods #:nodoc:
|
||||
def active_model_serializer
|
||||
return @active_model_serializer if defined?(@active_model_serializer)
|
||||
if "".respond_to?(:safe_constantize)
|
||||
def active_model_serializer
|
||||
@active_model_serializer ||= "#{self.name}Serializer".safe_constantize
|
||||
end
|
||||
else
|
||||
def active_model_serializer
|
||||
return @active_model_serializer if defined?(@active_model_serializer)
|
||||
|
||||
# Use safe constantize when Rails 3.2 is out
|
||||
begin
|
||||
@active_model_serializer = "#{self.name}Serializer".constantize
|
||||
rescue NameError => e
|
||||
raise unless e.message =~ /uninitialized constant$/ && e.name.to_s == "#{self.name}Serializer"
|
||||
begin
|
||||
@active_model_serializer = "#{self.name}Serializer".constantize
|
||||
rescue NameError => e
|
||||
raise unless e.message =~ /uninitialized constant/
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
11
test/serializer_support_test.rb
Normal file
11
test/serializer_support_test.rb
Normal file
@ -0,0 +1,11 @@
|
||||
require "test_helper"
|
||||
|
||||
class RandomModel
|
||||
include ActiveModel::SerializerSupport
|
||||
end
|
||||
|
||||
class SerializerSupportTest < ActiveModel::TestCase
|
||||
test "it returns nil if no serializer exists" do
|
||||
assert_equal nil, RandomModel.new.active_model_serializer
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue
Block a user