2010-06-25 2 views
5
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

: project.admins.new.

이 문제를 해결하는 방법은 무엇입니까?

답변

13

레일스에 클래스가 사용자임을 알릴 필요없이 직접 has_many 관계를 지정할 수 있어야합니다. 좋아요 :

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