sti和has_many in rails

问题描述:

register < user 

admin < user 

class project 
    has_many :admin, :class => 'User', :conditions => "type = 'admin'" 
    has_many :registers, :class => 'User', :conditions => "type = 'registers'" 

这里的问题是,当我使用项目has_many创建一个注册或管理员,它不会自动填充对象类到类型字段。sti和has_many in rails

像这样:project.admins.new。

如何解决这个问题?

你应该能够直接指定has_many关系,而不需要告诉Rails该类是User。像这样:

class User < ActiveRecord::Base 
    belongs_to :project 
end 

class Register < User  
end 

class Admin < User 
end 

class Project < ActiveRecord::Base 
    has_many :admins 
    has_many :registers 

    def make_new_admin 
    ad = admins.create(:name => "Bob") 
    # ad.type => "Admin" 
    end 
end