mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
Add serializer to association block context
This commit is contained in:
parent
d5833e8e1b
commit
ae6805eacd
@ -59,6 +59,8 @@ module ActiveModel
|
|||||||
def value(serializer)
|
def value(serializer)
|
||||||
@object = serializer.object
|
@object = serializer.object
|
||||||
@scope = serializer.scope
|
@scope = serializer.scope
|
||||||
|
# Add '@serializer' to binding for use in association block as 'serializer'
|
||||||
|
@serializer = serializer
|
||||||
|
|
||||||
if block
|
if block
|
||||||
block_value = instance_eval(&block)
|
block_value = instance_eval(&block)
|
||||||
@ -117,7 +119,7 @@ module ActiveModel
|
|||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
attr_accessor :object, :scope
|
attr_accessor :object, :scope, :serializer
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|||||||
@ -40,6 +40,7 @@ module ActiveModel
|
|||||||
|
|
||||||
has_many :roles do
|
has_many :roles do
|
||||||
meta count: object.posts.count
|
meta count: object.posts.count
|
||||||
|
serializer.cached_roles
|
||||||
end
|
end
|
||||||
|
|
||||||
has_one :blog do
|
has_one :blog do
|
||||||
@ -60,6 +61,12 @@ module ActiveModel
|
|||||||
end
|
end
|
||||||
meta liked: object.likes.any?
|
meta liked: object.likes.any?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cached_roles
|
||||||
|
[
|
||||||
|
Role.new(id: 'from-serializer-method')
|
||||||
|
]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@ -67,7 +74,7 @@ module ActiveModel
|
|||||||
@blog = Blog.new(id: 1337, name: 'extra')
|
@blog = Blog.new(id: 1337, name: 'extra')
|
||||||
@bio = Bio.new(id: 1337)
|
@bio = Bio.new(id: 1337)
|
||||||
@like = Like.new(id: 1337)
|
@like = Like.new(id: 1337)
|
||||||
@role = Role.new(id: 1337)
|
@role = Role.new(id: 'from-record')
|
||||||
@profile = Profile.new(id: 1337)
|
@profile = Profile.new(id: 1337)
|
||||||
@location = Location.new(id: 1337)
|
@location = Location.new(id: 1337)
|
||||||
@reviewer = Author.new(id: 1337)
|
@reviewer = Author.new(id: 1337)
|
||||||
@ -144,7 +151,7 @@ module ActiveModel
|
|||||||
|
|
||||||
def test_relationship_meta
|
def test_relationship_meta
|
||||||
expected = {
|
expected = {
|
||||||
data: [{ id: '1337', type: 'roles' }],
|
data: [{ id: 'from-serializer-method', type: 'roles' }],
|
||||||
meta: { count: 1 }
|
meta: { count: 1 }
|
||||||
}
|
}
|
||||||
assert_relationship(:roles, expected)
|
assert_relationship(:roles, expected)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user