Одна из фундаментальных философий, лежащих в основе Rails, - это СУХОЙ - не повторяйте себя.Следуя этой философии, кажется довольно излишним иметь три отдельных экрана входа в систему.
В том же духе, студенты, работники и администраторы в отдельных моделях кажутся немного непрактичными.У всех пользователей (предположительно) будут имена, электронные адреса и пароли, а также другая информация.Я бы имел только одну модель и назвал бы эту модель такой, какая она есть - User
.Затем я могу настроить группы пользователей следующим образом:
class User < ActiveRecord::Base
belongs_to :user_group
end
class UserGroup < ActiveRecord::Base
has_many :users
end
User.first.user_group # => <UserGroup name: 'Students'>
User.find(123).user_group # => <UserGroup name: 'Workers'>
UserGroup.find_by_name('Administrators').users # => [<User ...>, <User ...>, ...]
Внезапно вход в систему перестает быть проблемой.Пользователь аутентифицируется как пользователь, и приложение немедленно узнает, к какой группе пользователей он принадлежит, и может отображать соответствующую информацию таким образом.
Кроме того, я был бы не прав, если бы не далкрик Придумать .Это драгоценный камень для обработки аутентификации, и он определенно сэкономит вам много труда и усилий, если вы подумаете о создании методов аутентификации самостоятельно.