mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 07:16:49 +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
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
module ClassMethods #:nodoc:
|
module ClassMethods #:nodoc:
|
||||||
|
if "".respond_to?(:safe_constantize)
|
||||||
|
def active_model_serializer
|
||||||
|
@active_model_serializer ||= "#{self.name}Serializer".safe_constantize
|
||||||
|
end
|
||||||
|
else
|
||||||
def active_model_serializer
|
def active_model_serializer
|
||||||
return @active_model_serializer if defined?(@active_model_serializer)
|
return @active_model_serializer if defined?(@active_model_serializer)
|
||||||
|
|
||||||
# Use safe constantize when Rails 3.2 is out
|
|
||||||
begin
|
begin
|
||||||
@active_model_serializer = "#{self.name}Serializer".constantize
|
@active_model_serializer = "#{self.name}Serializer".constantize
|
||||||
rescue NameError => e
|
rescue NameError => e
|
||||||
raise unless e.message =~ /uninitialized constant$/ && e.name.to_s == "#{self.name}Serializer"
|
raise unless e.message =~ /uninitialized constant/
|
||||||
|
end
|
||||||
end
|
end
|
||||||
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