Skip to content

Commit

Permalink
refactor users_controller with interactors
Browse files Browse the repository at this point in the history
  • Loading branch information
npauzenga committed Nov 7, 2015
1 parent e863254 commit 4d1a7bf
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 6 deletions.
14 changes: 8 additions & 6 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ def new
end

def create
@user = User.new(user_params)
if @user.save
UserMailer.registration_confirmation(@user).deliver_now
result = CreateUser.call(user_params: user_params)

if result.success?
UserMailer.registration_confirmation(result.user).deliver_now
flash[:notice] = "Thanks! Please check your email to complete sign up"
redirect_to sign_in_path
else
Expand All @@ -16,9 +17,10 @@ def create
end

def show
@user = User.find_by(params[:id])
@todos = @user.todos
@todo = Todo.new
result = ShowUser.call(id: params[:id])
@user = result.user
@todos = result.todos
@todo = result.todo
end

private
Expand Down
8 changes: 8 additions & 0 deletions app/interactors/create_user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class CreateUser
include Interactor

def call
context.user = User.new(context.user_params)
context.fail!(errors: context.user.errors) unless context.user.save
end
end
9 changes: 9 additions & 0 deletions app/interactors/show_user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class ShowUser
include Interactor

def call
context.user = User.find_by(context.id)
context.todos = context.user.todos
context.todo = Todo.new
end
end

0 comments on commit 4d1a7bf

Please sign in to comment.