Skip to content

Commit a0f4e05

Browse files
author
Ryan Bigg
committed
Section 7.4.7: Add ability to edit and update users
1 parent 890d6bf commit a0f4e05

File tree

4 files changed

+65
-0
lines changed

4 files changed

+65
-0
lines changed

ticketee/app/controllers/admin/users_controller.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class Admin::UsersController < Admin::BaseController
2+
before_action :set_user, only: [:show, :edit, :update, :destroy]
3+
24
def index
35
@users = User.order(:email)
46
end
@@ -21,12 +23,36 @@ def create
2123
end
2224
end
2325

26+
def edit
27+
end
28+
29+
def update
30+
if params[:user][:password].blank?
31+
params[:user].delete(:password)
32+
params[:user].delete(:password_confirmation)
33+
end
34+
if @user.update(user_params)
35+
flash[:notice] = "User has been updated."
36+
redirect_to admin_users_path
37+
else
38+
flash[:alert] = "User has not been updated."
39+
render "edit"
40+
end
41+
end
42+
2443
private
44+
45+
def set_user
46+
@user = User.find(params[:id])
47+
end
48+
2549
def user_params
2650
params.require(:user).permit(:name,
2751
:email,
2852
:password,
2953
:password_confirmation,
3054
:admin)
3155
end
56+
57+
3258
end
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<h2>Editing a User</h2>
2+
3+
<%= render "form" %>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<h2><%= @user %></h2>
2+
3+
<%= link_to "Edit User", edit_admin_user_path(@user) %>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
require "rails_helper"
2+
3+
feature "Editing a user" do
4+
let!(:admin_user) { FactoryGirl.create(:admin_user) }
5+
let!(:user) { FactoryGirl.create(:user) }
6+
7+
before do
8+
login_as(admin_user)
9+
visit "/"
10+
click_link "Admin"
11+
click_link "Users"
12+
click_link user.email
13+
click_link "Edit User"
14+
end
15+
16+
scenario "Updating a user's details" do
17+
fill_in "Email", with: "[email protected]"
18+
click_button "Update User"
19+
20+
expect(page).to have_content("User has been updated.")
21+
22+
expect(page).to have_content("[email protected]")
23+
expect(page).to_not have_content(user.email)
24+
end
25+
26+
scenario "Toggling user's admin ability" do
27+
check "Is an admin?"
28+
click_button "Update User"
29+
30+
expect(page).to have_content("User has been updated.")
31+
expect(page).to have_content("#{user.email} (Admin)")
32+
end
33+
end

0 commit comments

Comments
 (0)