是否可以为嵌入式模型提供虚拟属性?
我有一个A类:
class A
include Mongoid::Document
field :name, type: String
embedded_in :b
def pnl=(p)
end
def pnl
"p"
end
def as_json(options={})
attrs = super(methods: [:pnl])
attrs
end
end
和B级:
class B
include Mongoid::Document
field :name, type: String
embedds :a
end
如果我从B取记录: b = B.first b.as_json
我没有从嵌入式类中获取虚拟属性 - 我只看到持久属性。我的控制器应该返回b包含其嵌入对象的所有虚拟属性 - 但这不起作用。
如果我这样做: b.a.as_json
然后我得到了嵌入式A类的虚拟属性,但这没有用。如果我不使用嵌入但引用的关系(belongs_to / has_one)它可以正常工作,但我认为嵌入式关系对我的用例会更好。 更正:它也不适用于引用的关系。似乎任何关系都不支持虚拟属性?
有没有办法让我获得调用b.as_json的虚拟属性?
谢谢, 迈克尔
答案 0 :(得分:0)
似乎as_json没有重新调用as_json。解决方案是覆盖serializable_hash而不是as_json,它按预期工作。不知道它与as_json不起作用的原因是什么。
RGDS Michaek