提问



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

最佳参考


正如我们在ActionController::Base中看到的那样,before_action只是before_filter的新语法。[9] [10]


但是,所有before_filters语法都在 Rails 5.0 中弃用,并将在 Rails 5.1中删除 [11]

其它参考1


这只是语法差异,在rails应用程序中有CRUD,七个动作基本上按名称索引创建显示更新修改销毁


Rails 4使开发人员友好,可以在过滤之前将语法更改为之前的行动


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


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


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

其它参考2


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

其它参考3


要弄清楚before_action和before_filter之间的区别,我们应该理解action和filter之间的区别。


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


过滤器针对控制器操作运行 - 在它们之前,之后或周围。
这些方法可以通过将公共数据重定向或设置到控制器中的每个操作来暂停操作处理。



  Rails 4 - > _action

  
  Rails 3 - > _filter


其它参考4


before_filter/before_action:表示在执行任何操作之前要执行的任何操作。


两者都是一样的。它们只是彼此的别名,因为它们的行为是相同的。