2013-12-24 49 views
1

我有兩個型號MongoID has_any_belongs_to_many參考

開發

has_and_belongs_to_many :founding_organizations, class_name: 'Organization' 
    has_and_belongs_to_many :collaborating_organizations, class_name: 'Organization' 

組織

has_and_belongs_to_many :founders, class_name: 'Developer' 
    has_and_belongs_to_many :collaborators, class_name: 'Developer' 

我怎樣才能讓開發者模型的代碼工作,而對組織模型進行任何更改。現在,當你創建一個組織並使用organization.founders << current_developer一切正常,開發人員ID存儲在組織的創始人數組中,但如果你查詢current_developer.founding_organizations響應是空的,我該如何實現這個工作流?我在ActiveRecord中加入了表格,但是我轉到了MongoDB,它現在的性能已經提高了10倍,它只是習慣了讓我感到困惑的不同事情。

回答

2

不知道如果這是可能的而不改變Organization模型。 如何使用inverse_of選項?

has_and_belongs_to_many :founding_organizations, class_name: 'Organization', inverse_of: :founders 
has_and_belongs_to_many :collaborating_organizations, class_name: 'Organization', inverse_of: :collaborators 

has_and_belongs_to_many :founders, class_name: 'Developer', inverse_of: :founding_organizations 
has_and_belongs_to_many :collaborators, class_name: 'Developer', inverse_of: :collaborating_organizations 

你會發現這裏更多信息http://mongoid.org/en/mongoid/docs/relations.html#common

+0

感謝這個,我把這個在我的應用程序,一切似乎傳遞錯誤檢查,但是當我打電話current_developer.founding_organizations我還是什麼也沒得到,看着後數據庫手動我可以看到組織本身有一個列表,如果創始人身份證,但開發人員本身沒有任何內容將它綁定到組織。我需要做其他事情來完成嗎? – ny95

+0

我剛剛在一個示例應用程序中嘗試過它,它適用於我,因爲它是。你有可能會干涉的模型中的任何其他關係嗎?我懷疑'current_developer'對象中存在這個問題或驗證問題。 – Bartosz

+0

顯然你需要調用current_developer.founder_of << organization.founders而不是我正在使用的相反。謝謝你的幫助。 – ny95