mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-24 14:56:50 +00:00
Merge pull request #85 from pushcx/master
Allow setting :each_serializer in 'render :json' calls
This commit is contained in:
commit
d6a68ed14f
@ -40,7 +40,13 @@ module ActiveModel
|
|||||||
|
|
||||||
def serializable_array
|
def serializable_array
|
||||||
@object.map do |item|
|
@object.map do |item|
|
||||||
if item.respond_to?(:active_model_serializer) && (serializer = item.active_model_serializer)
|
if @options.has_key? :each_serializer
|
||||||
|
serializer = @options[:each_serializer]
|
||||||
|
elsif item.respond_to?(:active_model_serializer)
|
||||||
|
serializer = item.active_model_serializer
|
||||||
|
end
|
||||||
|
|
||||||
|
if serializer
|
||||||
serializer.new(item, @options)
|
serializer.new(item, @options)
|
||||||
else
|
else
|
||||||
item
|
item
|
||||||
|
|||||||
@ -411,6 +411,24 @@ class SerializerTest < ActiveModel::TestCase
|
|||||||
assert_equal({ :items => [ hash.as_json ]}, serializer.as_json)
|
assert_equal({ :items => [ hash.as_json ]}, serializer.as_json)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class CustomPostSerializer < ActiveModel::Serializer
|
||||||
|
attributes :title
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_array_serializer_with_specified_seriailizer
|
||||||
|
post1 = Post.new(:title => "Post1", :author => "Author1", :id => 1)
|
||||||
|
post2 = Post.new(:title => "Post2", :author => "Author2", :id => 2)
|
||||||
|
|
||||||
|
array = [ post1, post2 ]
|
||||||
|
|
||||||
|
serializer = array.active_model_serializer.new array, :each_serializer => CustomPostSerializer
|
||||||
|
|
||||||
|
assert_equal([
|
||||||
|
{ :title => "Post1" },
|
||||||
|
{ :title => "Post2" }
|
||||||
|
], serializer.as_json)
|
||||||
|
end
|
||||||
|
|
||||||
class CustomBlog < Blog
|
class CustomBlog < Blog
|
||||||
attr_accessor :public_posts, :public_user
|
attr_accessor :public_posts, :public_user
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user