Rails STI для модели User с ассоциациями и аутентификацией - PullRequest
1 голос
/ 12 февраля 2012

Я разрабатываю сайт, где врачи могут управлять своими пациентами, назначениями и т. Д. У врача может быть несколько помощников, которые помогают им в этих действиях, а помощник может принадлежать нескольким врачам.

Как врачи, так и помощники должны иметь возможность выполнять вход из одной и той же формы входа, но по понятным причинам у них разные разрешения и ассоциации в зависимости от их роли, например, пациенты связаны с врачами, а не с ассистентом.

Как, по вашему мнению, лучше всего подойти к этому? Я рассматриваю CanCan для части авторизации и, возможно, STI для модели User, от которой Doctor и Assistant могут унаследовать для части аутентификации, но может ли STI обрабатывать HABTM между этими 2 плюс другие ассоциации, которые может иметь каждая модель?

Заранее большое спасибо

1 Ответ

0 голосов
/ 13 февраля 2012

Это должно сработать.

Просто убедитесь, что вы используете «тип», чтобы установить, какой пользователь. Затем вы можете использовать такие вещи, как:

current_user.is_doctor?

Для определения доступа в районы.

module User

  def is_doctor?
   true if self.type == Doctor
  end

  def is_assistant?
   true if self.type == Assistant
  end
end


module Doctor < User
  has_and_belongs_to_many :assistants, :through => "assistant_assignments"
end


module Assistant < User
  has_and_belongs_to_many :doctors, :through => "assistant_assignments"
end

Кричите, если вам нужно больше информации.

...