2010-09-28 90 views
0

我有一個用戶模型,它有很多項目。但每個項目都是不同的類型。一個WebApplication,DesktopApplication等等。所有這些不同類型都有自己的特定字段,但它們共享將存儲在「項目」表中的公共字段。Rails關聯幫助

我認爲這個解決方案對項目模型中的每個項目類型都有多個has_one。這是要走的路嗎?

回答

0

您最好的選擇可能是一個用戶對許多項目,然後有一個「擴展信息」,這是多態關聯。我認爲一個例子會比這句話更好地描述。

class User < ActiveRecord::Base 
    has_many :projects 
end 

class Project < ActiveRecord::Base 
    belongs_to :user 
    has_one :project_type, :as => :type 
end 

class ProjectType < ActiveRecord::Base 
    belongs_to :type, :polymorphic => true 
end 

class WebApplication < ProjectType 
    # fields here 
end 

class DesktopApplication < ProjectType 
    # fields here 
end 

@project.type = WebApplication.new 
@otherproject.type = DesktopApplication.new 

不幸的是我不能對此進行測試,以保證它的工作原理,但我想我得到了一切正確的:)

+0

上述解決方案的問題是因爲我們正在做的項目類型,WebApplication的和DesktopApplication的STI需要有相同的數據庫字段;這對我來說無法解決 – 2010-09-29 02:59:14