diclophis (owner)

Fork Of

Revisions

gist: 226455 Download_button fork
public
Public Clone URL: git://gist.github.com/226455.git
Embed All Files: show embed
all_in_controller.rb #
1
2
3
4
5
6
7
# Typical way of handling the email in the controller
class UsersController < ApplicationController
  def create
    @user = User.new params[:user]
    UserMailer.deliver_welcome(@user) if @user.save
  end
end
intention_revealing_method.rb #
1
2
3
4
5
6
7
8
9
10
11
12
class UsersController < ApplicationController
  def create
    @user = User.new params[:user]
    @user.signup
  end
end
 
class User < ActiveRecord::Base
  def signup
    UserMailer.deliver_signup(self) if save
  end
end
observer_pattern.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
# Using ActiveRecord::Callbacks as an observer
class UsersController < ApplicationController
  def create
    @user = User.new params[:user]
    @user.save
  end
end
 
class User < ActiveRecord::Base
  after_create { |new_user|
    UserMailer.deliver_welcome(new_user)
  }
end
service.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Using a service to remove duplication
class UsersController < ApplicationController
  def create
    @user = User.new params[:user]
    UserService.signup @user
  end
end
 
class Admin::UsersController < AdminController
  def create
    @user = User.new params[:user]
    UserService.signup(@user)
  end
end
 
class UserService
  def self.signup(user)
    UserMailer.deliver_welcome(user) if user.save
  end
end