検証のタイミング

■validateのタイミングはいつか?
1.save
 save!にして置くと、notNullなのにNullになっていたりすると、個々でエラー


2.validate系
 検証が行われる。よって、save!にすると、そっちのエラーが先に働く


3.before_create
ここでフックが起動。よって、ここでハッシュパスを発行するのに、検証で、ハッシュパスの存在
を確認すると、検証にひっかっかる。


【追加 値が入るタイミング】
ちなみに、正常処理の際には、validateの状態であっても値はセットされているので安心してください。

例えばこの例。

def validate
    if self.held_date_time < Time.now
      self.errors.add(:held_date_time,"面接日時が現在より前です") 
    end
  
    no_clash_with_other_interview?()
  end

  def no_clash_with_other_interview?()
    p self.interviewer.family_name
  end

ここで、self.interviewerがセットされていない場合はNULLになるが、きちんとPOSTされていれば
値は取り出せる。

しかし、presenceをしても検証は先に働かないので、self.interviewerがNULLの場合のエラーは
validate内に書かないといけない。


【追加2 モデルが外部キーを含んでいる場合】
POSTしてsaveする際に、おそらく外部キーのモデル.validも調べられる。
よって、外部キーのモデルとしてnilを入れると、エラーする。当然、validateでそれを検出しても
無理。その前にエラーするから