Rails 4: before_filter vs before_action


Jawaban:


521

Seperti yang bisa kita lihat di ActionController::Base, before_actionhanya sintaks baru untuk before_filter.

Namun semua before_filterssintaks tidak lagi digunakan dalam Rails 5.0 dan akan dihapus dalam Rails 5.1


42
Di satu sisi penghinaan memiliki akal tetapi di sisi lain ada praktik yang baik di rel dan di ruby ​​memiliki beberapa alias untuk satu metode sehingga Anda dapat menggunakannya dalam konteks yang berbeda tanpa kehilangan makna.
freemanoid

4
Dalam 4.2 Mereka tidak mencela itu, tetapi menghapusnya dari dokumen karena tidak disarankan. edgeguides.rubyonrails.org/…
onetwopunch

17
Jika tidak disarankan, mengapa Anda tidak mencela itu? Bodoh.
Berikan Birchmeier

4
@ JohnWhitley - penghentian tidak merusak API. Itulah inti dari penghinaan.
Berikan Birchmeier

9
@JohnWhitley - Spamming karena suatu alasan. Setiap proyek yang disiplin harus mengatasi peringatan penghentian dengan tidak menggunakan fungsi yang sudah usang .
Berikan Birchmeier

67

Itu hanya perbedaan sintaksis, dalam aplikasi rel ada CRUD, dan tujuh tindakan pada dasarnya berdasarkan indeks nama , baru , buat , tampilkan , perbarui , edit , musnahkan .

Rails 4 membuatnya ramah bagi pengembang untuk mengubah sintaksis sebelum filter ke sebelum aksi .

before_action metode panggilan sebelum tindakan yang kami nyatakan, sukai

before_action :set_event, only: [:show, :update, :destroy, :edit]

set_event adalah metode yang akan memanggil selalu sebelum menampilkan, memperbarui, mengedit, dan menghancurkan.


31

Itu hanya perubahan nama. before_actionlebih spesifik, karena dijalankan sebelum tindakan.


1

before_filter / before_action: berarti apa saja yang akan dieksekusi sebelum tindakan apa pun dijalankan.

Keduanya sama. mereka hanya alias untuk satu sama lain karena perilaku mereka sama.


-3

Untuk mengetahui apa perbedaan antara before_action dan before_filter, kita harus memahami perbedaan antara tindakan dan filter.

Aksi adalah metode pengontrol yang dapat Anda gunakan untuk rute. Misalnya, halaman pembuatan pengguna Anda mungkin dialihkan ke UsersController # new - new adalah aksi dalam rute ini.

Filter dijalankan sehubungan dengan tindakan pengontrol - sebelum, setelah atau di sekitarnya. Metode ini dapat menghentikan pemrosesan tindakan dengan mengarahkan ulang atau mengatur data umum ke setiap tindakan dalam pengontrol.

Rails 4 -> _action

Rails 3 -> _filter

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.