Skip to content

Commit b8f4fc8

Browse files
authored
Merge pull request #165 from nickskalkin/update-users-using-interactor
Updating users using interactor
2 parents 68842bf + 3a951b7 commit b8f4fc8

File tree

2 files changed

+39
-13
lines changed

2 files changed

+39
-13
lines changed

apps/admin/controllers/users/update.rb

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,14 @@ class Update
1515
end
1616

1717
def call(params)
18-
# TODO: To operation
19-
@user = repo.find(params[:id])
18+
result = Interactors::Users::Update.new(params.valid?, params).call
19+
@user = result.user
2020

21-
if @user && params.valid?
22-
user_params = params[:user]
23-
user_params[:admin] = user_params[:admin] == '1'
24-
25-
repo.update(@user.id, user_params)
21+
if result.successful?
2622
redirect_to routes.user_path(user.id)
2723
else
2824
redirect_to routes.edit_user_path(user.id)
2925
end
3026
end
31-
32-
private
33-
34-
def repo
35-
@repo ||= UserRepository.new
36-
end
3727
end
3828
end
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
require 'hanami/interactor'
2+
3+
module Interactors
4+
module Users
5+
class Update
6+
include Hanami::Interactor
7+
8+
expose :user
9+
10+
def initialize(params_valid, params)
11+
@params = params
12+
@params_valid = params_valid
13+
@user = repo.find(@params[:id])
14+
end
15+
16+
def call
17+
return error('No user found') unless @user
18+
return error('Unprocessable entity') unless @params_valid
19+
20+
prepare_user_params
21+
repo.update(@user.id, @params[:user])
22+
end
23+
24+
private
25+
26+
def repo
27+
UserRepository.new()
28+
end
29+
30+
def prepare_user_params
31+
32+
@params[:user][:admin] = @params[:user][:admin] == '1'
33+
end
34+
end
35+
end
36+
end

0 commit comments

Comments
 (0)