是否可以具有嵌入式模型的虚拟属性?
我有一个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
我没有从嵌入式A类获取虚拟属性 - 我只看到持久属性。我的控制器应该返回包含其嵌入式对象的所有虚拟属性 - 但这不起作用。
如果我这样做: B.A.AS_JSON
然后,我得到了嵌入式A类的虚拟属性,但这无济于事。如果我不使用嵌入式关系,而是使用引用的关系(属于/has_one(,则可以正常工作,但是我认为嵌入关系对我的用例会更好。更正:它也无法与参考的关系作用。似乎没有任何关系支持虚拟属性?
有没有办法我也会得到虚拟属性调用b.as_json?
谢谢迈克尔
似乎as_json不递归呼叫as_json。解决方案是覆盖Serializable_hash而不是AS_JSON,并且可以按预期工作。不确定它与as_json不起作用的原因是什么。
RGDMichaek