2011-10-26 2 views
0

私は、異なる役割(例:教師と生徒)の複数の参加者を持つミーティングモデルを持っています。今、私は1つのクラスParticipantを持っています。これは2つの値(Tutor/Student)を持つtype:typeを持っています。これら2つのタイプは全く同じメソッドを共有しています。それぞれには独自のバージョンの他のメソッドもあります。 (たとえば、会議のスケジュールがDirectorから承認を得なければならない場合は、先生と言います)。 私は型にオーバーロードすることにより、方法の違いを扱う:新しいクラスを作成するか、タイプがRailsでオーバーロードする

def make_appointment 
    do stuff 
    if type = "Tutor" 
    do something extra 
    end 
end; 

私はこの道を行くために、または参加者のクラスを継承する二つのクラス、先生と生徒を持っているかどうかは未定です。

これを実装する方法を決定する際に考慮すべき問題点は何ですか?

ありがとうございます。

答えて

1

、オプションがあります - など、行動を強化するために周りのブロックを通過し、拡張ポイントで構築

ほとんどタイプの比較を通じて実装型依存の振る舞いがありますたびに、それは良いではありませんアイディア。

+0

Daveに感謝します。あなたが言ったオプションのいくつかの例を教えていただけますか?タイプ比較の欠点は何ですか? – AdamNYC

+0

欠点はメンテナンスであり、あなたのコードのいくつかをオブジェクト指向にすることと、そうでないことの認知的オーバーヘッドです。 –

+0

ありがとうDave。また、私があなたが言及したオプションについて知ることができるいくつかの参考文献を指摘することができますか? – AdamNYC

0

cancanのような認可宝石を使用してください。

ロールベースの認可についての短いチュートリアルがあります。 =>https://github.com/ryanb/cancan/wiki/Role-Based-Authorization

データを1つのモデルに保存しても大丈夫です。多くの異なるアトリビュートがある場合は、ポリモルフィックアソシエーションを使用してユーザモデルを拡張できますが、ほとんどの場合、必要ではありません。わずかに異なる方法については

+0

こんにちはDavidさん、私は認可のためにcancanを使用しましたが、どのように私がこの文脈でそれを適用できるかはわかりません。あなたはもっと詳しく説明できますか? – AdamNYC

関連する問題