在 ActiveModel Serializer 中覆盖关联 - returns 所有属性而不是序列化对象属性

Overriding association in ActiveModel Serializer - returns all attributes instead of serialized object attributes

我有 2 个模型:RepositoryBranch,它们都有相应的序列化器。

RepositorySerializer中,我想列出一个默认分支。我是这样做的:

attributes :id, :name, :ssh_url, :default_branch
has_many :branches

def default_branch
  object.branches.find_by_name(object.default_branch)
end

BranchSerializer中,我有:

attributes :id, :name

branches returns 所有分支都正确序列化并且只包含 idname 属性,但是 default_branch returns 所有该分支的属性。

在这种情况下有什么方法可以利用现有的 BranchSerializer 还是我自己应该 return 方法 default_branch.

中所需的属性

如有任何帮助,我们将不胜感激。

您正在将 default_branch 作为属性序列化,因此 BranchSerializer 不会生效。 添加

  has_one :default_branch do
    object.branches.find_by_name(object.default_branch)
  end