fysh blog

備忘録とかにする予定

Railsのbefore_createで気になったこと

Railsチュートリアル の第11章でUserモデルにbefore_createコールバックを追加したが,User.createメソッドは使用せずUser.newメソッドとuser.saveメソッドを使用しているのにこのコールバックを使用する意味はあるのかと思った.(UsersController.createの中でUser.newメソッドとuser.saveメソッドが呼ばれる.)

class User < ApplicationRecord
  attr_accessor :remember_token, :activation_token
  before_save   :downcase_email
  before_create :create_activation_digest
  validates :name,  presence: true, length: { maximum: 50 }
  ~
end
class UsersController < ApplicationController
  ~
  def create
    @user = User.new(user_params)
    if @user.save
      @user.send_activation_email
      flash[:info] = "Please check your email to activate your account."
      redirect_to root_url
    else
      render 'new', status: :unprocessable_entity
    end
  end
  ~
end

調べると,どのメソッドを使用するかにかかわらずuser.new_record? == trueの状態でDBに登録される時に適用されるみたい. www.techscore.com 確かに,レコードが作成される前に,となっていて,createメソッドが呼ばれたときに,とはなっていない. api.rubyonrails.org