Rails 4:before_filter vs. before_action

fre*_*oid 329 ruby ruby-on-rails crud ruby-on-rails-4

在扶手> 4.0.0发电机,创建CRUD操作before_action没有before_filter.它似乎做同样的事情.那么这两者之间的区别是什么?

fre*_*oid 507

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

但是,在Rails 5.0 中不推荐使用所有before_filters语法,并且将在Rails 5.1中删除它们

  • 一方面,弃用有意义,但另一方面,rails和ruby中有一个很好的做法,一个方法有几个别名,所以你可以在不同的语境中使用它而不会失去意义. (42认同)
  • 如果不鼓励,那么为什么*不会*你弃用它?愚蠢. (17认同)
  • @JohnWhitley - 垃圾邮件是有原因的.任何训练有素的项目都应该通过*不使用已弃用的函数来解决弃用警告*. (9认同)
  • 在4.2中他们不是弃用它,而是从文档中删除它,因为不鼓励它.http://edgeguides.rubyonrails.org/4_2_release_notes.html#action-pack-notable-changes (4认同)
  • @JohnWhitley - 弃用不会破坏API.这就是整个弃用点. (3认同)
  • 它们在Rails 5中被正式弃用,它们的使用将产生警告. (2认同)

Awa*_*ais 64

这只是语法差异,在rails app中有CRUD,七个动作基本上都是通过名称索引,新建,创建,显示,更新,编辑,销毁.

Rails 4使得开发人员可以在过滤操作之前更改语法.

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

before_action :set_event, only: [:show, :update, :destroy, :edit]
Run Code Online (Sandbox Code Playgroud)

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


Mat*_*ias 30

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