【发布时间】:2011-04-22 09:36:13
【问题描述】:
我认为 ActiveRecord 的情况不会是一个独特的情况,但我似乎找不到任何有类似问题的人,所以这里是:
我有一个用户类和一个定义用户能力的角色类。例如,您可以有一个角色为“tutor”的用户、一个角色为“student”的用户,以及一个角色为 ['tutor', 'student'] 的用户:
class User < ActiveRecord::Base
has_many :roles
end
class Role < ActiveRecord::Base
end
我想做的是添加基于角色的活动记录关联。显然,一个学生可能有很多:课程,一个导师可能有一个:他们教的主题,一个学生和导师都可能有很多:约会,但似乎将所有这些关联添加到每个用户实例是正确的路要走。
子类化 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
但我不知道这是否被认为是错误的,或者我什至不知道如何让它发挥作用。处理这种带有关联的用户/角色设置的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails activerecord associations