Rails 4:before_filter vs. before_action

在rails> 4.0.0中,生成器使用before_action而不是before_filter创buildCRUD操作。 它似乎做同样的事情。 那么这两者有什么区别呢?

正如我们在ActionController::Base 看到的 , before_action只是before_filter一个新语法 。

但是,所有的before_filters语法在Rails 5.0中 都不推荐使用 ,并且会在Rails 5.1中被移除

这只是语法的区别,在rails应用程序中有CRUD,而且七个动作基本上都是按名称索引新build创build显示更新编辑销毁

Rails 4使开发人员更容易在过滤 之前更改语法。

在我们声明的动作之前调用before_action方法

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

set_event是一个在显示,更新,编辑和销毁之前总是调用的方法。

这只是一个名称的变化。 before_action更具体,因为它在一个动作之前被执行。

为了弄清楚before_action和before_filter有什么不同,我们应该理解action和filter之间的区别。

一个动作是一个你可以路由到的控制器的方法。 例如,您的用户创build页面可能会路由到UsersController#new – new是此路由中的操作。

filter在控制器动作之前,之后或周围运行。 这些方法可以通过redirect或设置控制器中每个动作的公共数据来暂停动作处理。

Rails 4 – > _action

Rails 3 – > _filter