, , @user2860931, , , , . , , - , pmo .
, . Devise Rolify .
, Devise, . Rolify gem. . , : https://github.com/RolifyCommunity/rolify. GEM, , . .
has_and_belongs_to_many Users.
, Create Read (show) Update Delete (CRUD) , seeds.rb, .
p "Removing existing #{Role.all.count} roles"
Role.destroy_all
p "Creating 7 roles"
[:user, :admin, :portfolio_manager, :programme_manager, :project_manager, :coordinator, :pmo].each do |role|
Role.create( name: role )
end
p "Should have created 7 Roles, roles created: #{Role.all.count}"
, , , . ,
rake db: seed
. , .
. Devise , , , , , . , .
users_controller.rb
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update]
def index
@users = User.all
end
def show
end
def edit
end
def update
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to @user, notice: 'User was successfully updated.'}
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:username, :email, {role_ids: []})
end
end
, Devise. , , , , , .
routes.rb
Rails.appliction.routes.draw do
devise_for :users
root 'pages#home'
resources :users
end
, , . :
Prefix Verb URI Pattern Controller
new_user_session GET /users/sign_in(.:format) devise/sessions
user_session POST /users/sign_in(.:format) devise/sessions
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions
user_password POST /users/password(.:format) devise/passwords
new_user_password GET /users/password/new(.:format) devise/passwords
edit_user_password GET /users/password/edit(.:format) devise/passwords
PATCH /users/password(.:format) devise/passwords
PUT /users/password(.:format) devise/passwords
cancel_user_registration GET /users/cancel(.:format) devise/registrations
user_registration POST /users(.:format) devise/registrations
new_user_registration GET /users/sign_up(.:format) devise/registrations
edit_user_registration GET /users/edit(.:format) devise/registrations
PATCH /users(.:format) devise/registrations
PUT /users(.:format) devise/registrations
DELETE /users(.:format) devise/registrations
user_unlock POST /users/unlock(.:format) devise/unlocks
new_user_unlock GET /users/unlock/new(.:format) devise/unlocks
GET /users/unlock(.:format) devise/unlocks
root GET / pages
about GET /about(.:format) pages
contact GET /contact(.:format) pages
users GET /users(.:format) users
POST /users(.:format) users
new_user GET /users/new(.:format) users
edit_user GET /users/:id/edit(.:format) users
user GET /users/:id(.:format) users
PATCH /users/:id(.:format) users
PUT /users/:id(.:format) users
DELETE /users/:id(.:format) users
, , , , . , css, , .
, index.html.erb /app/views/users. show.html.erb , . .
index.html.erb
<!-- TODO: Tidy up this file and make it look good -->
<% @users.each do |user| %>
<p>
<%= link_to "#{user.username}<#{user.email}>", user %>
<%= link_to "edit", edit_user_path(user) %>
</p>
<% end %>
show.html.erb
<p>
Username: <%= @user.username %>
</p>
<p>
Email address: <%= @user.email %>
</p>
<%= link_to "Back", users_path %>
edit.html.erb
<p>
Username: <%= @user.username %>
</p>
<p>
Email address: <%= @user.email %>
</p>
<%= form_for @user do |f| %>
<% Role.all.each do |role| %>
<%= check_box_tag "user[role_ids][]", role.id, @user.role_ids.include?(role.id) %>
<%= role.name %></br>
<% end %>
<%= f.submit %>
<% end %>
<%= link_to "Back", users_path %>
, , , . :
, , , .