2012-02-12 15 views
1

医師が患者や予定などを管理できるサイトを開発中です 医師はこれらの活動に役立つ複数のアシスタントを持つことができ、助手は複数の医師に属することができます。Rails STI関連と認証付きのユーザーモデル

医師とアシスタントは同じログインフォームからサインインできるはずですが、明らかに患者の役割によって異なる権限と関連性があります。たとえば、患者はアシスタントではなく医師に関連付けられます。

これにアプローチするにはどうすればよいでしょうか?私はCanCanを認可部分について考えています。そして、DoctorとAssistantが認証部分を継承することができるUserモデルのSTIかもしれませんが、STIはこれらの2つの間のHABTMを扱うことができます。

ありがとうございます。

答えて

0

これはすべきことです。

「タイプ」を使用して、ユーザーの設定を確認してください。

current_user.is_doctor? 

エリアへのアクセスを判断するには、次のようにします。

module User 

    def is_doctor? 
    true if self.type == Doctor 
    end 

    def is_assistant? 
    true if self.type == Assistant 
    end 
end 


module Doctor < User 
    has_and_belongs_to_many :assistants, :through => "assistant_assignments" 
end 


module Assistant < User 
    has_and_belongs_to_many :doctors, :through => "assistant_assignments" 
end 

さらに詳しい情報が必要な場合は叫んでください。

+0

サブクラスの医師が独自の関連が多い場合は、STIを維持することをお勧めしますか? have_manyの患者、予定などがあります。将来、問題のあるユーザーには、アシスタントが何もしないうちにこれらの関連付けを処理することはありませんか? –

+0

サブクラスにのみ関連付けを追加することはできません。例:医師には多数の患者がいます。その後、患者がDoctor.find(1)をやりたいと思ったときに、私はちょうどサブクラスだけが予約を持つことができる別のシナリオでこれをやった。 a)医師に反復するか、またはb)ユーザーを反復し、「医者なら」とチェックするロジックを追加するかのどちらかです。 – TomDunning

+0

私はちょっと混乱しています、データベースに列を入力していますか? – Noz

関連する問題