我有一个序列化程序,其中包含一些has_many
个关联,我修改了embed_key
。
我正在尝试将模型的ID设为path-name
而不是12
。下面的代码就是这样:
class SymbolSerializer < ActiveModel::Serializer
attributes :id,
:name,
:parent_id,
:rails_id
embed :ids, include: true
has_many :ancestors, embed_key: :symbol_path, serializer: SimplifiedSymbolSerializer
has_many :children, embed_key: :symbol_path, serializer: SimplifiedSymbolSerializer
has_one :parent, embed_key: :symbol_path, serializer: SimplifiedSymbolSerializer
has_many :siblings, embed_key: :symbol_path, serializer: SimplifiedSymbolSerializer
def id
object.symbol_path
end
def parent_id
object.id
end
def rails_id
object.id
end
end
问题是我还想拥有父对象的实际id
(我试图在我的parent_id
方法中做^^)
现在,重写的方法仍会返回:symbol_path
键,而不是id
。
任何人都知道如何解决这个问题?
答案 0 :(得分:0)
对我来说,解决这个问题最简单的方法就是为我想传递的密钥使用不同的命名约定。
所以我所要做的就是在那里添加这个方法/属性:
def parent_rails_id
object.parent.id
end