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