Альтернативный подход, который я использую регулярно, - это использование другой модели под названием UserGroup. Например:
$ rails g scaffold user_group name:string description:text is_admin:boolean
Затем вы добавите user_group_id:integer
к вашей модели пользователя:
$ rails g migration add_user_group_id_to_users user_group_id:integer
В вашей пользовательской модели вы можете добавить два метода экземпляра, чтобы выяснить, является ли какой-либо конкретный пользователь «обычным» или «администратором»:
#app/models/user.rb
def normal?
self.user_group && !self.user_group.is_admin
end
def admin?
self.user_group && self.user_group.is_admin
end
Вероятно, это слишком много для проектов, в которых есть только администраторы и не администраторы, но это удобно, если у вас много категорий пользователей, таких как ecommerce_manager, story_editor и т. Д.