gpt4 book ai didi

ruby-on-rails - ApplicationController 方法的 Rails 作用域

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:26 25 4
gpt4 key购买 nike

当我从像 UsersController < ApplicationController 这样的继承 Controller 调用位于 ApplicationController 内部的方法时,该方法的作用域是什么? ApplicationController 还是 UsersController?

假设我有那些文件

class ApplicationController < ActionController::Base
def method1
method2
end

def method2
...
end
end

class UsersController < ApplicationController
# call method1 from here

def method2
...
end
end

正如您在这里看到的,我从 UsersController 调用方法 1(位于 appcontroller 中);method1 会调用 UsersController 内部还是 ApplicationController 内部的 method2?

谢谢!

最佳答案

新类 UsersController 继承了原始类 ApplicationController 的所有方法。当您在 UsersControllerdef 一个新方法时,它会替换父 Controller 中的定义,但任何其他方法仍然存在,并在调用时进行评估。

因此,UsersController#method1 将调用 UsersController#method2。任何时候调用方法时,ruby 都会从当前上下文向上搜索堆栈,直到找到匹配的方法:

1) 它检查 UsersController#method1,什么也没找到

2) 它检查ApplicationController#method1,并执行它,调用#method2

3) 它检查找到并执行的 UsersController#method2

关于ruby-on-rails - ApplicationController 方法的 Rails 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16658696/

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