2012-01-11 24 views
1

我有一個模型group.rb與子類organization.rbcompany.rb等我想知道是否有辦法創建一個名稱爲「Rails Beginners Society」的組織還創建了一個名爲「Rails Beginners Society」的公司?現在看來,它看起來像是我做了類似Organization.find_or_create_by_name(:name => @profile.organization)的事情,最終我不僅創建了一個組織,而且還創建了一個公司以及group.rb的所有其他子類,並在我的控制器中使用了我提供的名稱。避免在Rails中從給定模型的子類創建重複的對象

任何想法/指導將不勝感激!

我的模型是這樣的:

class Group < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

class Organization < Group 
end 

等...

回答

1

這聽起來像你試圖做的是STI(單表繼承)。 Rails支持這一點。

class Group < ActiveRecord::Base 
end 

class Organization < Group 
end 

等等

如果您在groups表中有一欄type,Rails的應該處理一切都是爲了你。

+0

這就是我的模型的樣子,但我不認爲我有'type'列。謝謝! – tvalent2 2012-01-11 02:11:55

+0

我已將'type'列添加到我的'Groups'模型中。我需要在控制器中執行任何操作來指定類型嗎? – tvalent2 2012-01-11 02:29:20

+1

不,如果你做了'Organization.create!(params [:organization])',Rails將在groups表中創建一個記錄,'type'自動設置爲'Organization'。 – 2012-01-11 02:34:00