首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 4: before_filter与before_action

Rails 4: before_filter与before_action
EN

Stack Overflow用户
提问于 2013-05-13 18:26:27
回答 3查看 166.7K关注 0票数 352

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

EN

回答 3

Stack Overflow用户

发布于 2013-05-13 18:33:04

这只是一个名字的改变。before_action更具体,因为它在操作之前执行。

票数 32
EN

Stack Overflow用户

发布于 2018-04-30 18:52:24

before_filter/ before _ action :表示在执行任何操作之前要执行的任何内容。

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

票数 1
EN

Stack Overflow用户

发布于 2021-06-13 20:39:18

只能将before_action与rspec-rails一起使用,因为before_filter会在测试期间表现不佳,从而给人带来惊喜

代码语言:javascript
运行
复制
class TodosController < ApplicationController
  before_filter :authenticate

  def index
    @todos = Todo.all
  end
  ## Rest of the code follows
end

before_filter

代码语言:javascript
运行
复制
feature 'User creates todo' do
  scenario 'successfully' do
    sign_in
    click_on 'Add Todo'
    fill_in 'Title', with: "Buy Milk"
    click_on 'Submit'

    expect(page).to have_css '.todos li', text: "Buy Milk"
  end
end

预期的失败是

代码语言:javascript
运行
复制
NoMethodError:
       undefined method `authenticate' for #<TodosController:0x0000558b68573f48>

但是before_filter给了..。

代码语言:javascript
运行
复制
ActionView::Template::Error:
       undefined method `each' for nil:NilClass

也就是说,不知何故,钩子运行没有错误,但控制器使用@todos uninitialized更好地节省了时间,使用非过时的代码...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16519828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档