2010-09-28 92 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