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