2012-03-12 6 views
1

私はUserモデルのロールを設定しましたが、今のところusersテーブルのロール文字列があります。値は、管理者、セールス担当者、インストラクター、学生のいずれかになります。Rails 3.異なるロールとして機能するようにユーザーモデルをセットアップする方法は?

教師が教える予定のScheduledSessionモデルがあります。私はinstructor_id列を持っています。この列は、ユーザーテーブル(インストラクターの役割を持つユーザー)からのIDを持つことになっています。

どのようにモデルの関連付けを設定できますか?ユーザーモデルではhas_many :scheduled_sessionsを追加するのが正しいとは思われません。なぜなら、ロールが営業担当者または管理者であれば、それはちょうど良い気分にならないからです。 ScheduledSessionモデルでbelongs_to :user, :as instructorのようなものを設定していますが、エラーUnknown key :asが表示されます。

これはどのように設定しますか?

答えて

1

belongs_toをScheduledSessionモデルでわずかに異なる設定にしたいとします。

belongs_to :instructor, :class_name => 'User, :foreign_key => 'user_id' 

これはScheduledSessionオブジェクトのinstructorを参照すると、それはユーザーテーブル内のエンティティを指す持つことができます。

単一の役割を持つ各ユーザーで役割ベースのユーザーを追求する場合は、ユーザーモデルにhas_manyの関係を設定する方法はありません。それがなければ、ユーザーに関連付けられたscheduled_sessionsを取得するメカニズムはありません。

代わりに、単一テーブル継承を使用することもできます。これにより、SchededSessionsを持たないAdminユーザーを作成できますが、インストラクターが担当します。これらのすべてを同じテーブルに保存しますが、ActiveRecordを使用すると、簡単に区画化することができます。