在之前发布的Mongoid(2.0.beta.20)中,我可以传递一个类类型作为 嵌入式文档集合上.find_or_create_by块的第二个参数。 这似乎不再是这种情况,使用v2.0.1,但我仍然如此 需要做多态find_or_create_by。任何建议/指针 如何做到这一点?
我曾经这样做过:
SomeClass.childclass.find_or_create_by({:key => "value"},
InheritingChildClass)
现在我得到一个例外,说太多参数(2对1) 在.find_or_create_by。
使用find_or_create_by时,如何告诉集合创建正确类型的对象?或者,我如何创建自己的方法,该方法与我想要的功能相同,并且可以在我的嵌入式文档集中重复使用?
感谢任何帮助。
感谢。
答案 0 :(得分:1)
我最终为此推出了自己的解决方案
module Mongoid::Relations
class Many
def find_or_new(attrs, type, &block)
inst = self.where(attrs).first
unless inst
inst = type.new
inst.write_attributes attrs
self << inst
end
inst
end
end
end
答案 1 :(得分:0)
不确定我是否真的理解你需要通知子类,但请检查这个要点:https://gist.github.com/960684
我会搜索子类实例而无需通知它。也许您的场景确实需要它,但如果确实如此,为什么不调用子类的find_or_create_by?