Railsでデータを登録後にメールを送信ヘ(^o^)ノ

Railsでユーザ登録後にメール送信することはよくあります。

今日、その部分を見てて気になったのでメモ程度に

もともとはこんな感じのコードやった

# app/controllers/user.rb
def create
    @user = Post.new(user_params)
    @user.save

    UserMailer.wellcome_email(@user).deliver
    respond_with(@user)
end

別に問題ないのですが...

気になったのはココ⇒UserMailer.wellcome_email(@user).deliver

なので、リファクタリングしてみました。

# app/models/user.rb
after_create :send_wellcome_email

private
  def send_wellcome_email
    UserMailer.wellcome_email(self).deliver
  end
# app/controllers/user.rb
def create
    @user = Post.new(user_params)
    @user.save
    respond_with(@user)
end

callbackはコードの見通しを良くしてくれますね

メール送信をモデルのafter_createに書くか、コントローラーのaround_actionに書くか迷った

なんかメール送信をモデルに書くの違和感ある...( ̄▽ ̄;)

やっぱ、around_actionかなー

Happy Hacking٩( ‘ω’ )و