2

在以前發佈的Mongoid(2.0.b20)中,我可以將類類型作爲嵌入文檔集合中的.find_or_create_by塊的第二個參數傳遞給 。 這似乎不再是這樣,用v2.0.1,但我仍然 需要做多態find_or_create_by。任何建議/指針 如何做到這一點?polymorphic .find_or_create_by與mongoid 2.0.1,嵌入式文檔集合?

我曾經這樣做:

SomeClass.childclass.find_or_create_by({:key => "value"}, InheritingChildClass)

現在我得到一個異常說參數太多(2 1) 上.find_or_create_by。

如何使用find_or_create_by告訴集合創建正確類型的對象?或者,我如何創建我自己的方法,它的功能將等同於我想要的,並且可以在我的嵌入式文檔集合中重複使用?

任何幫助表示讚賞。

謝謝。

回答

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 
0

不知道我真的瞭解你的需要通知的子類,但檢查這個要點:https://gist.github.com/960684

我做搜索子類的實例,而無需通報。也許你的場景真的需要它,但如果它真的需要它,爲什麼不調用子類的find_or_create_by?

+0

嗯,現在我明白「 - - ..如果你想要的東西,像Person.find_or_create_by生成一個子類的實例,這可能是一個問題。 – 2011-05-08 00:05:20

+0

是的。也 - 我似乎無法調用InheritingChildClass.find_or_create_by。它會拋出異常,說我無法直接訪問該類,並且必須使用該集合。 – 2011-05-08 13:02:43