动态添加/修改活动记录关联

| 我认为ActiveRecord并不是唯一的情况,但是我似乎找不到任何存在类似问题的人,所以这里是: 我有一个用于用户的User类和一个用于定义用户功能的Roles类。例如,您可以有一个角色为\'tutor \'的用户,一个角色为\'student \'的用户和一个角色为[\'tutor \',\'student \']的用户:
class User < ActiveRecord::Base
  has_many :roles
end

class Role < ActiveRecord::Base

end
我想做的是基于角色添加activerecord关联。显然,一个学生可能有很多:课程,一个导师可能有他们教的:subject,并且学生和导师都可能有很多:appointments,但是似乎并没有将所有这些关联添加到每个User实例中。正确的方法。 子类化User也似乎是错误的-我考虑过做Tutor
class User < ActiveRecord::Base

  protected

  after_initialize do
    if self.has_role?(Role::STUDENT)
      has_many :courses # This does not work
    else
      # etc etc etc
    end
  end
end
但是我不知道这是否被认为是错误的,或者甚至是如何使它起作用的。用关联处理这种用户/角色设置的最佳方法是什么?     
已邀请:
我会为您的问题推荐一颗宝石。看到一个相关的SO问题:角色宝石推荐     
我将执行以下操作:
class User < ActiveRecord::Base
  has_many :roles
end

class Role < ActiveRecord::Base
end

class Tutor < Role
  has_one :subject
end

class Student < Role
  has_many :courses
end
    

要回复问题请先登录注册