Как реализовать ассоциации Rails при использовании ролей вместо нескольких моделей для пользовательских типов - PullRequest
1 голос
/ 11 января 2012

Мне нужно несколько советов о том, как лучше подходить к следующему.

Раньше в моем приложении были модели Tutor, Student, Reservation.

Я хочу, чтобы в бронировании содержались репетитор и студент.

В настоящее время я использую devise для аутентификации пользователя, и мне нравится идея использования универсального User и определения ролей для пользователей, как это сделали многие люди с devise & cancan. Это позволяет легко создать роль администратора, например. Таким образом, у меня может быть роль Tutor или Student, содержащаяся в User.

Теперь моя проблема в том, что я больше не могу использовать ассоциации так, как мне хотелось бы, например,

Reservation
  belongs_to :Tutor
  belongs_to :Student

потому что у меня больше нет индивидуальной модели для каждого типа пользователя.

Что мне делать?

Я обнаружил, что если у меня есть отдельные модели для Tutor и Student, то при разработке мне потребуются отдельные ссылки для входа в систему и редактирования каждого типа пользователя.

Добавление ссылок на похожие вопросы

Несколько связей в Rails, где имя класса не совпадает с именем ассоциации

1 Ответ

1 голос
/ 11 января 2012

Просто переопределите имя класса, чтобы использовать 'User':

class Reservation < ActiveRecord::Base
  belongs_to :tutor, :class_name => "User"
  belongs_to :student, :class_name => "User"
end
...