Rails 3. Как настроить пользовательскую модель, чтобы она играла разные роли? - PullRequest
1 голос
/ 12 марта 2012

Я настраиваю роли для модели User, сейчас у меня просто есть столбец строки роли для таблицы users.Значением может быть администратор, продавец, инструктор или студент.

Теперь у меня есть модель ScheduledSession, которую инструктор должен преподавать.У меня есть столбец instructor_id, в котором должен быть идентификатор из таблицы пользователей (пользователь с ролью инструктора).

Итак, как мне установить связь в моделях?в модели User, кажется, неправильно добавлять has_many :scheduled_sessions, потому что, если роль - продавец или администратор, она просто не чувствует себя правильно.или настроить что-то вроде belongs_to :user, :as instructor в модели ScheduledSession, но я получаю ошибку Unknown key :as.

Как бы вы это настроили?

1 Ответ

1 голос
/ 12 марта 2012

Вы хотите настроить свою принадлежность немного по-другому в модели ScheduledSession.

belongs_to :instructor, :class_name => 'User, :foreign_key => 'user_id'

Это позволяет вам ссылаться на instructor объекта ScheduledSession и указывать на объект в таблице User.

Невозможно обойтись без отношения has_many в вашей модели пользователя, если вы хотите преследовать пользователя на основе ролей, где каждый пользователь имеет одну роль. Без этого у вас не будет механизма для получения запланированных сессий, связанных с пользователем.

Альтернативой может быть использование здесь наследования одной таблицы, что позволит вам создавать пользователей-администраторов, у которых нет SchededSessions, но есть инструкторы, у которых они есть. Вы все равно будете хранить все это в одной таблице, но ActiveRecord облегчит вам их разделение.

...