gpt4 book ai didi

ruby-on-rails - 过滤器出现之前的顺序是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 06:31:02 28 4
gpt4 key购买 nike

过滤器出现之前的顺序是什么?具体来说,关于继承,before_action 过滤器的发生顺序是什么?例如,这行得通吗:

class A < ActionController::Base
before_action :set_user

def set_user
@user = something
end
end

class B < A
before_action :set_post

def show
render @post
end

def set_post
@post = @user.posts.first
end
end

B#show 会工作吗?过滤顺序有哪些规则供以后引用?我在 Rails 文档中找不到任何内容。

最佳答案

我建议看看 the source code API Docs 在过滤器上。

默认顺序应该是

  1. :set_post
  2. :set_user

我认为如果您想将 :set_user 推到堆栈的顶部,您可以将 A 中的行更改为

prepend_before_action :set_user

另外值得指出的是,这不是关于该主题的唯一问题;有others here on SO .


至于你的具体情况,看起来你需要像我上面提到的那样更改 A 以便在 之前分配 @user B 中的 >set_post 运行。


从 4.2.6 开始(可能在早期版本中发生了变化),顺序现在是先父后子:

  1. :set_user
  2. :set_post

关于ruby-on-rails - 过滤器出现之前的顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582400/

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