我有什么,我倒是觉得不会与ActiveRecord的一个独特的情况,但我似乎无法找到一个类似问题的人,所以这里有云:动态添加/修改ActiveRecord关联
我有一个用户的用户类和定义用户功能的Roles类。对于恩,你可以有一个角色的“导师”,与“学生”的角色的用户,并与一个角色的用户[“导师”,“学生”]用户:
class User < ActiveRecord::Base
has_many :roles
end
class Role < ActiveRecord::Base
end
我想要做的是添加基于角色的activerecord关联。显然,一个学生可能有很多:课程,导师可能有:他们教的科目,学生和导师都可以有很多约会,但似乎并不是将所有这些关联添加到每个用户实例都是正确的要走的路。
子类用户也似乎是错误的 - 我想过做导师<用户和学生用户<,并在每个子类中添加适当的关联,但如果我们有一个学生是一个家教?那我们需要一个StudentTutor课程?如果添加更多角色,这条路线看起来很危险。
我已考虑过做这样的事情:
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
但我不知道如果这被认为是错误的或者我怎么连使它发挥作用。处理这种使用关联的用户/角色设置的最佳方法是什么?
感谢您的答复。我不确定这些解决了我的问题。不过,我可能只是在制造这个问题。我担心的是User模型会有很多关联,其中一些关联可能与当前用户实例无关 - 也许这只是好的? – Ben 2011-04-21 18:28:44