Sebelum rel 5.1
Menambahkan _was
ke atribut Anda akan memberi Anda nilai sebelumnya.
Untuk rel 5.1+
Disalin dari jawaban Lucas Andrade di bawah ini : https://stackoverflow.com/a/50973808/9359123
Menambahkan _was
tidak digunakan lagi di rel 5.1, sekarang Anda harus menambahkan_before_last_save
Sesuatu seperti:
before_save object
do_something_with object.name_before_last_save
end
Akan mengembalikan nilai nama sebelum penyimpanan terakhir Anda di database (berfungsi untuk menyimpan dan membuat)
Perbedaan antara _was
dan _before_last_save
menurut dokumentasi:
_adalah sumber dari dokumen
def attribute_was(attr)
attribute_changed?(attr) ? changed_attributes[attr] : __send__(attr)
end
_before_last_save sumber dari dokumen
def attribute_before_last_save(attr_name)
mutations_before_last_save.original_value(attr_name)
end
self.context
:self.context_was
_was
.Untuk rel 5.1+
Menambahkan
_was
tidak digunakan lagi di rel 5.1, sekarang Anda harus menambahkan_before_last_save
Sesuatu seperti:
Akan mengembalikan nilai nama sebelum penyimpanan terakhir Anda di database (berfungsi untuk menyimpan dan membuat)
Perbedaan antara
_was
dan_before_last_save
menurut dokumentasi:_adalah sumber dari dokumen
_before_last_save sumber dari dokumen
Anda dapat melihat contoh yang lebih baik di sini
sumber
attribute_was
telah ditinggalkan untuk mendukungattribute_in_database
, sedangkanattribute_before_last_save
metode yang benar-benar baru dari 5.1 yang tidak ada padanannya di versi Rails sebelumnya. Sumber: github.com/rails/rails/pull/25337#issuecomment-225166796attributes_before_type_cast
Metode ActiveRecord mengembalikan hash atribut sebelum typecasting dan deserialization terjadi.sumber
Lihat dokumentasi rel
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
Model.attribute_was mengembalikan nilai sebelumnya: D
sumber