Rails 3.如何设置用户模型作为不同的角色?

时间:2012-03-12 19:16:52

标签: ruby-on-rails ruby associations

我为User模型设置角色,现在,我只有users表的角色字符串列。值可以是管理员,销售员,讲师或学生。

现在我有一个教师应该教的ScheduledSession模型。我有一个instructor_id列,它应该具有来自users表(具有教师角色的用户)的id。

那么如何在模型中设置关联?在用户模型中添加has_many :scheduled_sessions似乎不对,因为如果角色是销售人员或管理员,则感觉不对。或者在ScheduledSession模型中设置类似belongs_to :user, :as instructor的内容,但收到错误Unknown key :as

你会如何设置它?

1 个答案:

答案 0 :(得分:1)

您希望在ScheduledSession模型中稍微改变您的belongs_to。

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

这允许您引用ScheduledSession对象的instructor并让它指向User表中的实体。

如果您希望在每个用户都有一个角色的情况下追求基于角色的用户,则无法在您的用户模型上建立has_many关系。没有它,您将无法检索与用户关联的scheduled_sessions。

另一种方法可能是在这里使用单表继承,这将允许您创建没有SchededSessions的管理员用户,但是可以创建具有SchededSession的管理员用户。您仍将所有这些存储在同一个表中,但ActiveRecord将使您更容易划分它们。