У меня есть то, что я думаю, не было бы уникальной ситуации с ActiveRecord, но я не могу найти никого с подобной проблемой, поэтому вот так:
У меня есть класс User для пользователейи класс Roles, который определяет возможности пользователя.Например, у вас может быть пользователь с ролью «наставник», пользователь с ролью «студент» и пользователь с ролью «[tutor», «студент»]:
class User < ActiveRecord::Base
has_many :roles
end
class Role < ActiveRecord::Base
end
Что я хотел бы сделать, это добавить ассоциации активных записей на основе ролей.Ясно, что у студента может быть много: курсов, у преподавателя может быть: предмет, который они преподают, и у ученика, и у преподавателя может быть много: назначений, но не похоже, что добавление всех этих ассоциаций в каждый экземпляр пользователя является правильнымпуть.
Пользователь подкласса также кажется неправильным - я думал о том, чтобы сделать 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
Но я понятия не имею, считается ли это неправильным или как я мог бы заставить это работать.Каков наилучший метод для работы с такого рода настройкой пользователя / роли с помощью ассоциаций?