Automatically include ArraySerializer in ActiveRecord::Relation

fixes #81
This commit is contained in:
Bradley Priest 2012-07-10 10:17:54 +08:00
parent 09fac61b0a
commit 7eb2b90b7c
2 changed files with 28 additions and 3 deletions

View File

@ -524,9 +524,15 @@ module ActiveModel
end
end
class Array
# Array uses ActiveModel::ArraySerializer.
module ActiveModel::ArraySerializerSupport
def active_model_serializer
ActiveModel::ArraySerializer
end
end
Array.send(:include, ActiveModel::ArraySerializerSupport)
ActiveSupport.on_load(:active_record) do
ActiveRecord::Relation.send(:include, ActiveModel::ArraySerializerSupport)
end

View File

@ -4,8 +4,27 @@ class RandomModel
include ActiveModel::SerializerSupport
end
class RandomModelCollection
include ActiveModel::ArraySerializerSupport
end
module ActiveRecord
class Relation
end
end
class SerializerSupportTest < ActiveModel::TestCase
test "it returns nil if no serializer exists" do
assert_equal nil, RandomModel.new.active_model_serializer
end
end
test "it returns ArraySerializer for a collection" do
assert_equal ActiveModel::ArraySerializer, RandomModelCollection.new.active_model_serializer
end
test "it automatically includes array_serializer in active_record/relation" do
ActiveSupport.run_load_hooks(:active_record)
assert_equal ActiveModel::ArraySerializer, ActiveRecord::Relation.new.active_model_serializer
end
end