2009-08-28 5 views
1

레일에 대한 약간의 STI 상속 예제를 읽었습니다. 내 요구 사항 (사용자의 기본 클래스에서 상속 한 사용자 역할/유형). 여러 역할을 가진 사용자를 너무 잘 처리하지 못하는 것 같습니다. 특히 데이터베이스의 유형 필드에 의존하기 때문에.레일 STI 스타일 사용자 당 여러 역할에 대한 상속

이 문제를 빠르고 쉽게 해결할 수 있습니까?

답변

3

STI가 사용자 역할/사용자 시나리오에서 올바른 해결책인지 확실하지 않습니다. 사용자 역할/유형을 특정 사용자 양식으로 생각하지 않습니다. has_and_belongs_to_many를 사용하는 것이 일을

class Membership < ActiveRecord::Base 
    belongs_to :user  # foreign key - user_id 
    belongs_to :role  # foreign key - role_id 
end 
class User < ActiveRecord::Base 
    has_many :memberships 
    has_many :roles, :through => :membership 
end 
class Role < ActiveRecord::Base 
    has_many :memberships 
    has_many :users, :through => :membership 
end 

또 다른 방법 : 나는 다음과 같은 스키마를 가질 것이다. restful_authentication 플러그인을 확인할 수도 있습니다.

+2

+1 STI는 사용자 역할을 구현하는 방법이 아닙니다. –

0

Andy가 말한 것처럼 has_and_belongs_to_many이이를 수행하는 또 다른 방법입니다.

참고 : 데이터베이스에는 연결 테이블이 필요하지만 모델에는 숨겨져 있습니다.

1

문제를 해결할 수있는 좋은 방법은 easy_roles 보석 일 수 있습니다. github에서 찾을 수 있습니다. 다른 사람들은 이미 STI가 당신의 물건을 구현할 수있는 방법이 아니라고 말했습니다.

관련 문제