Bisakah Anda menjelaskan secara rinci apa itu callback Ruby :before_save
dan :before_create
Rails, dan apa hubungannya dengan validasi Rails? Apakah validasi terjadi setelah :before_save
atau :before_create
?
sumber
Bisakah Anda menjelaskan secara rinci apa itu callback Ruby :before_save
dan :before_create
Rails, dan apa hubungannya dengan validasi Rails? Apakah validasi terjadi setelah :before_save
atau :before_create
?
Dalam operasi pembuatan di bawah Rails, ada enam callback sebelum operasi database, dan dua setelahnya. Secara berurutan, ini adalah:
before_validation
before_validation_on_create
after_validation
after_validation_on_create
before_save
before_create
after_create
after_save
Operasi pembaruan memiliki set yang sama persis, kecuali baca update
alih-alih di create
mana - mana (dan UPDATE alih-alih INSERT ).
Dari ini, Anda dapat melihat bahwa validasi dilakukan sebelum before_save
dan before_create
callback.
The before_save
terjadi sedikit sebelum before_create
. Sejauh pengetahuan saya, tidak ada yang terjadi di antara mereka; tetapi before_save
juga akan diaktifkan pada operasi Perbarui, sementara before_create
hanya akan menembak pada Create.
before_validation_on_create
danafter_validation_on_create
dihapus pada Rails 3 , sebagai gantinya gunakanbefore_validation
danafter_validation
masing-masing dengan opsi:on => :create
.after_save
atauafter_create
?after_save
atauafter_create
callback,self
adalah catatan yang baru saja disimpan, seperti yang ada setelah simpan. Itu bidang termasuk software otomatis sepertiid
,created_at
,updated_at
.before_create
mengacu pada objek baru yang disimpan ke database, bukancreate
metode aktual yang dipanggil. Dengan demikian,before_create
masih bisa dipecat bahkan darisave
metode.before_save
3, danbefore_create
5.before_save
disebut setiap kali suatu objek disimpan. Jadi untuk objek baru dan yang sudah ada. (buat dan perbarui tindakan)before_create
hanya sebelum penciptaan. Jadi hanya untuk objek baru (buat aksi)sumber
before_create
vs.before_save :on => :create
Terkadang Anda harus berhati-hati dengan urutan panggilan balik
Lihat di sini untuk perincian lebih lanjut: http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/sumber
before_save :on => :create
tidak bekerja (setidaknya pada rel 3.2)before_save :generate_api_key, :if => :new_record?