1

나는 사용자가 세 가지 다른 프로필/역할에 가입 할 수있는 레일에서 구직 애플리케이션을 구현하고 있습니다.여러 역할에 대한 연결을 구현하는 방법은 무엇입니까?

  1. 고용주
  2. 노동자
  3. Enterpreneur (자신의 회사를 가지고) 이상의 프로필/역할을 선택할 수 있습니다

사용자. (필자는 유증을 사용하고 있습니다)

내 쿼리는 위의 case.?like에 단일 테이블 상속을 구현할 수는 있습니다

CLass Employer < user 
    CLass worker < user 

나에 대한 최상의 솔루션이 될해야하는지 위의 기능을 구현하는 데이터베이스 구조?

+0

http://code.alexreisner.com/articles/single-table-inheritance-in-rails.html –

답변

0

그렇습니다. STI는 모델이 동일한 속성을 공유하고 모두 쿼리 할 수 ​​있기를 원할 경우 널리 사용됩니다 (하나의 db 테이블을로드하기 때문에 속도와 단순성에 도움이됩니다). 클래스간에 코드를 공유 할 수도 있습니다. 한 번만 부모 클래스에 메서드를 넣고 모든 자식을 상속해야합니다.

사이드 노트, 수업 활용, 당신이 루비 명명 관행을 따르고 있습니다을

Class Worker < User 

EDIT (제안 방식)

나는 여전히 사용할 수 있습니다, 이러한 역할은 사용자로부터 상속 없을 것 STI는 다른 모델 당신이 railscast보고 할 수 있습니다

Class User < ActiveRecord::Base 
     has_many :profiles 
    Class Profile < ActiveRecord::Base 
     belongs_to :user 
    Class Employer < Profile 
    Class Worker < Profile 
    Class Entrepreneur < Profile 
+0

@@ 신속한 답변을 위해 Kyle에게 감사드립니다. 그렇습니다. STI 구현을 고려하고 있지만 질문에 언급했듯이 그 사용자는 하나 이상의 프로필/역할을 선택할 수 있으므로이 경우 STI 구현 방법. –

+0

질문을 오해, 내가 업데이 트됩니다 –

+0

네 정말 고군분투하시기 바랍니다. 우리는 좋은 해결책이 있으면 제발 제안하십시오. 다른 기능/좋은 코드/데이터베이스가이 중요한 것에 달려 있기 때문에. 현재 나는 rolify 보석을 사용하고 있습니다.하지만 그 느낌 그것의 좋은 해결책이 아닙니다. –

0

을 만들 수 있지만 - 이것이 내가 최근에 구현 된 것입니다. 데이터베이스의 비트 마스크 열을 사용합니다. 또한 내 허가를 처리하기 위해 cancan과 짝을지었습니다.