Trong ray> 4.0.0 máy phát điện tạo ra các hoạt động CRUD với before_action
không before_filter
. Nó dường như làm điều tương tự. Vậy sự khác biệt giữa hai điều này là gì?
Trong ray> 4.0.0 máy phát điện tạo ra các hoạt động CRUD với before_action
không before_filter
. Nó dường như làm điều tương tự. Vậy sự khác biệt giữa hai điều này là gì?
Câu trả lời:
Như chúng ta có thể thấy trong ActionController::Base
, before_action
chỉ là một cú pháp mới cho before_filter
.
Tuy nhiên, tất cả before_filters
cú pháp không được dùng trong Rails 5.0 và sẽ bị xóa trong Rails 5.1
Đó chỉ là sự khác biệt về cú pháp, trong ứng dụng rails có CRUD và bảy hành động về cơ bản theo chỉ mục tên , mới , tạo , hiển thị , cập nhật , chỉnh sửa , hủy .
Rails 4 làm cho nhà phát triển thân thiện để thay đổi cú pháp trước khi lọc thành trước khi hành động .
phương thức gọi before_action trước các hành động mà chúng ta khai báo, như
before_action :set_event, only: [:show, :update, :destroy, :edit]
set_event là một phương thức sẽ gọi luôn trước khi hiển thị, cập nhật, chỉnh sửa và hủy.
before_filter / before_action: có nghĩa là mọi thứ sẽ được thực thi trước khi bất kỳ hành động nào được thực thi.
Cả hai đều giống nhau. họ chỉ là bí danh cho nhau vì hành vi của họ là như nhau.
Để tìm ra sự khác biệt giữa before_action và before_filter, chúng ta nên hiểu sự khác biệt giữa hành động và bộ lọc.
Một hành động là một phương thức của bộ điều khiển mà bạn có thể định tuyến tới. Ví dụ: trang tạo người dùng của bạn có thể được định tuyến đến UsersContoder # new - mới là hành động trong tuyến đường này.
Các bộ lọc chạy đối với các hành động của bộ điều khiển - trước, sau hoặc xung quanh chúng. Các phương thức này có thể tạm dừng xử lý hành động bằng cách chuyển hướng hoặc thiết lập dữ liệu chung cho mọi hành động trong bộ điều khiển.
Đường ray 4 -> _action
Đường ray 3 -> _filter