답변:
Rails의 작성 작업에는 데이터베이스 작업 전 6 개의 콜백이 있고 이후에는 2 개의 콜백이 있습니다. 순서대로 다음과 같습니다.
before_validation
before_validation_on_create
after_validation
after_validation_on_create
before_save
before_create
after_create
after_save
업데이트 작업은 어디에서나 읽기 update
대신 INSERT 대신 UPDATE 를 제외하고 정확히 동일한 세트를 갖습니다 .create
이것으로 before_save
and 및 before_create
콜백 전에 유효성 검사가 수행되고 있음을 알 수 있습니다 .
이 before_save
약간 전에 발생합니다 before_create
. 내가 아는 한, 그들 사이에는 아무 일도 일어나지 않습니다. before_save
업데이트 작업에서도 실행 되지만 before_create
Creates에서만 실행됩니다.
after_save
나 after_create
?
after_save
또는 after_create
콜백 self
에서 저장 후 존재하므로 방금 저장된 레코드입니다. 포함 자동 생성 필드이 좋아하는 그 id
, created_at
, updated_at
.
before_create
실제 create
호출되는 메서드가 아니라 데이터베이스에 저장되는 새 개체를 나타냅니다 . 따라서이 방법으로 before_create
도 여전히 해고 할 수 있습니다 save
.
before_save
3과 before_create
5가 표시됩니다.
before_create
vs before_save :on => :create
때로는 콜백 순서에주의해야합니다
자세한 내용은 여기를 참조하십시오 :
http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/
before_save :on => :create
작동하지 않습니다 (적어도 레일 3.2에서)
before_save :generate_api_key, :if => :new_record?
before_validation_on_create
및after_validation_on_create
레일 (3)으로 제거 하는 대신 사용before_validation
하고after_validation
옵션으로 각각:on => :create
.