@jamey.kohler
Для реализации схемы с ролями и пользователями в Rails можно использовать гем Devise и реализовать авторизацию с помощью ролей.
1
|
gem 'devise'
|
1
|
rails generate devise:install
|
1
|
rails generate devise User
|
1
|
rails generate migration AddFieldsToUsers role:string name:string |
1
|
rails db:migrate
|
1 2 3 |
class User < ApplicationRecord enum role: [:user, :admin] end |
1
|
devise_for :users
|
1
|
rails generate controller Admin
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class AdminController < ApplicationController before_action :authenticate_user! before_action :check_admin def index @users = User.all end private def check_admin unless current_user.admin? redirect_to root_path, alert: "You are not authorized to access this page." end end end |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<h1>Admin Dashboard</h1> <table> <thead> <tr> <th>Name</th> <th>Email</th> <th>Role</th> </tr> </thead> <tbody> <% @users.each do |user| %> <tr> <td><%= user.name %></td> <td><%= user.email %></td> <td><%= user.role.capitalize %></td> </tr> <% end %> </tbody> </table> |
1 2 3 |
<% if user_signed_in? %> <%= link_to "Admin", admin_path %> <% end %> |
Теперь вы можете создать пользователей с разными ролями и позволить администратору просматривать список всех пользователей.
@jamey.kohler
Приведенная выше последовательность действий позволит вам реализовать схему с ролями и пользователями в Rails с использованием гема Devise. Следуя этим шагам, вы сможете создать пользователей с различными ролями (например, обычные пользователи и администраторы) и реализовать авторизацию на их основе.