gpt4 book ai didi

ruby-on-rails-3 - 事件模型序列化程序中的限制关联级联

转载 作者:行者123 更新时间:2023-12-04 08:26:16 24 4
gpt4 key购买 nike

我在限制事件模型资源中序列化的关联级别时遇到问题。

例如:

一个游戏有很多团队,有很多玩家

class GameSerializer < ActiveModel::Serializer
attributes :id
has_many :teams
end

class TeamSerializer < ActiveModel::Serializer
attributes :id
has_many :players
end

class PlayerSerializer < ActiveModel::Serializer
attributes :id, :name
end

当我为 Team 检索 JSON 时,它会根据需要将所有玩家包含在一个子数组中。

当我检索游戏的 JSON 时,它包含一个子数组中的所有团队,非常好,但也包含每个团队的所有玩家。这是预期的行为,但是否可以限制关联级别?让 Game 只返回序列化的 Teams 而没有 Players?

最佳答案

另一种选择是滥用 Rails 的预先加载来确定要呈现哪些关联:

在您的 Rails Controller 中:

def show
@post = Post.includes(:comments).find(params[:id])
render json: @post
end

然后在 AMS 土地上:
class PostSerializer < ActiveModel::Serializer
attributes :id, :title
has_many :comments, embed: :id, serializer: CommentSerializer, include: true

def include_comments?
# would include because the association is hydrated
object.association(:comments).loaded?
end
end

可能不是最干净的解决方案,但它对我来说很好用!

关于ruby-on-rails-3 - 事件模型序列化程序中的限制关联级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16311989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com