当角色与外部模型有不同的关联时,如何为用户角色建模?
我有两个角色,老师和家长。老师有一个相关的学校,父母没有。这使得在单一模型中对教师和父母进行建模变得困难。
我不想单独对它们进行建模,因为它们的状态(字段)是相同的,并且它们都有一个“拥有并且属于许多”(HABTM)与孩子的关联。
我尝试使用单表继承(STI)解决了我的直接问题,但最终导致了更多问题。我希望有一个“构成而不是继承”的解决方案。
答案 0 :(得分:2)
条件has_one关系可能适合您:
class Role < ActiveRecord::Base
has_one :school, conditions: { name: 'Teacher' }
belongs_to :user
然后你应该能够做到:
user = User.first
user.role # let's say he is a Teacher
user.role.school # => should return the school
有关has_one的一些文档: http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_one
答案 1 :(得分:2)
如果你想保留一个班级,条件关系可以帮助你
class User < AR
has_one :school, conditions: { role: 'teacher' }
end
仍然有点古怪,但比STI更好