gpt4 book ai didi

ruby-on-rails - 在Rails 4中,before_action返回false的作用是什么?

转载 作者:行者123 更新时间:2023-12-03 10:11:46 47 4
gpt4 key购买 nike

我正在阅读pag上的“使用Rails 4进行敏捷Web开发”。 338它说:

[...] Callbacks can be passive, monitoring activity performed by a controller. They can also take a more active part in request handling. If a before action callback returns false, then processing of the callback chain terminates, and the action is not run. [...]



现在我的疑惑如下:在 how to execute an action if the before_action returns false中,有人告诉我们before_action的目标是在执行该 Action 之前准备一些东西,如果返回false并不意味着该 Action 没有运行,但是根据本书的说法是对...所以我有点困惑。

如果我正在尝试以下
class ProductsController < ApplicationController
before_action :test

def index
@products = Product.all
end


private

def test
return false
end
end

但是执行了操作,当我调用 /products时,我没有收到任何错误,页面显示的很好

最佳答案

before_action(以前称为before_filter)是在执行操作之前执行的回调。您可以阅读有关controller before/after_action的更多信息。

通常用于准备 Action 或更改执行。

约定是,如果链中的任何方法都呈现或重定向,那么将暂停执行并且不呈现操作。

before_action :check_permission

def hello
end

protected

def check_permission
unless current_user.admin?
# head is equivalent to a rendering
head(403)
end
end

在此示例中,如果 current_user.admin?返回false,则从不执行 hello操作。

以下是操作设置的示例:
before_action :find_post

def show
# ...
end

def edit
# ...
end

def update
# ...
end

protected

def find_post
@post = Post.find(params[:id])
end

在这种情况下, find_post将永远不会返回false。实际上,此before_action的目的是从 Action 主体中提取共享命令。

关于返回 false,据我所知,这对于ActiveRecord回调是正确的。但是对于before_action,返回false无效。实际上,官方文档中没有提到返回值很重要。

关于ruby-on-rails - 在Rails 4中,before_action返回false的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20623616/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com