在扶手> 4.0.0发电机,创建CRUD操作before_action
没有before_filter
。 这似乎做同样的事情。 那么,什么是这两者之间的区别?
Answer 1:
我们可以看到在ActionController::Base
, before_action
仅仅是一个新的语法进行before_filter
。
然而,所有before_filters
语法已弃用对Rails 5.0,将在Rails的5.1移除
Answer 2:
这只是语法的差异,在Rails应用程序有CRUD,和七个行动基本上是由名指数 , 新 , 创建 , 显示 , 更新 , 修改 , 破坏 。
轨道4使其开发者友好的行动之前更改过滤器之前的语法。
这是我们宣布的行动,像以前一样before_action调用方法
before_action :set_event, only: [:show, :update, :destroy, :edit]
set_event是总是会调用之前节目,更新,编辑和删除的方法。
Answer 3:
这仅仅是一个名称的改变。 before_action
是更具体的,因为它可以让一个动作之前执行。
Answer 4:
为了弄清楚是什么before_action和的before_filter之间的差异,我们应该明白的行动和过滤器之间的差异。
一个动作是一个控制器,它们可以对路线的方法。 例如,您的用户创建页面可能被路由到UsersController#新 - 新是这条线路的操作。
过滤器在运行方面向控制器动作 - 前,后或周围。 这些方法可以通过重定向或建立公共数据在控制器的每一个动作停止动作的处理。
导轨4 - > _action
导轨3 - > _filter
Answer 5:
的before_filter / before_action:意味着什么任何行动执行前执行。
两者都是相同的。 他们只是彼此别名作为他们的行为是一样的。
文章来源: Rails 4: before_filter vs. before_action