Skip to content

Instantly share code, notes, and snippets.

@diclophis
Forked from patmaddox/all_in_controller.rb
Created November 4, 2009 22:40
Show Gist options
  • Save diclophis/226455 to your computer and use it in GitHub Desktop.
Save diclophis/226455 to your computer and use it in GitHub Desktop.
# 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
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
# 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
# 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment