mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-24 14:56:50 +00:00
Merge pull request #88 from bradleypriest/ar-relation
Automatically include ArraySerializer in ActiveRecord::Relation
This commit is contained in:
commit
b91e63c4ec
@ -522,11 +522,4 @@ module ActiveModel
|
|||||||
ActiveSupport::Notifications.instrument("#{name}.serializer", payload, &block)
|
ActiveSupport::Notifications.instrument("#{name}.serializer", payload, &block)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Array
|
|
||||||
# Array uses ActiveModel::ArraySerializer.
|
|
||||||
def active_model_serializer
|
|
||||||
ActiveModel::ArraySerializer
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -56,6 +56,18 @@ ActiveSupport.on_load(:active_record) do
|
|||||||
include ActiveModel::SerializerSupport
|
include ActiveModel::SerializerSupport
|
||||||
end
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require 'action_controller'
|
require 'action_controller'
|
||||||
require 'action_controller/serialization'
|
require 'action_controller/serialization'
|
||||||
|
|||||||
@ -4,8 +4,27 @@ class RandomModel
|
|||||||
include ActiveModel::SerializerSupport
|
include ActiveModel::SerializerSupport
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class RandomModelCollection
|
||||||
|
include ActiveModel::ArraySerializerSupport
|
||||||
|
end
|
||||||
|
|
||||||
|
module ActiveRecord
|
||||||
|
class Relation
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class SerializerSupportTest < ActiveModel::TestCase
|
class SerializerSupportTest < ActiveModel::TestCase
|
||||||
test "it returns nil if no serializer exists" do
|
test "it returns nil if no serializer exists" do
|
||||||
assert_equal nil, RandomModel.new.active_model_serializer
|
assert_equal nil, RandomModel.new.active_model_serializer
|
||||||
end
|
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
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user