0

我正在修复过去设置'种类'的多态关联。这里是细节。修复多态关联

User.rb has fields: 
user_type_id 
user_type 

我需要User属于CompanyEmployee

我遇到的问题是因为User.rb字段未使用Rails约定命名(类似usable_typeusable_id)。我如何根据我所拥有的领域建立协会?

回答

2

有一个无证:foreign_type选项上belongs_to

class User < ActiveRecord::Base 
    belongs_to :user_type, :polymorphic => true, :foreign_type => 'user_type' 
end 
+0

我不能得到相反的协会合作 - 你怎么办相当于'has_one'? – sscirrus

0

最容易改变字段的名称以适应Rails约定:由于多态关联还没有正确设置,并且这些字段不应该用于其他任何事情,所以你应该没有问题。

基本上你需要选择一个名字xyz,以满足以下

class User < ActiveRecord::Base 
    belongs_to :xyz, :polymorphic => true 
end 

class Employee < ActiveRecord::Base 
    has_many :users, :as => :xyz 
end 

class Company < ActiveRecord::Base 
    has_many :users, :as => :xyz 
end 

您的用户模型领域

User 
xyz_id :integer 
xyz_type :string 

这也将使更多维护的代码以后。