gpt4 book ai didi

ruby-on-rails - rails : When does methods mentioned in first line of the ControllerClass get executed?

转载 作者:行者123 更新时间:2023-12-02 20:49:59 26 4
gpt4 key购买 nike

我遇到了在 ControllerClass 作用域中编写的方法调用,类似于(在 here 中):

class MoviesController < ApplicationController
# Is this a before_action or after_action or just an alias or something else?
pagination_header :index # <----- when will this be called

def index
# some logic here
end

end

它们到底何时执行,以及它们内部到底如何绑定(bind)(它们是否附加到某个地方的回调)


编辑:我知道pagination_header是一个应该在index内的渲染方法之前执行的方法。如何构建这样的方法?

这也许可以通过在 pagination_header 方法中包含 after_action 来实现,但是如果它只是一个仅执行一次的方法调用,那么在渲染操作之前如何调用它类何时加载?

最佳答案

您正在查看的方法只是一个类方法。没有 Controller 范围,但我明白你的直觉告诉你什么。

在 Ruby 中,有许多“范围门”,例如 class 关键字、def 关键字、module 关键字。每次通过作用域门时,消息的隐式接收者都会发生变化。隐式接收者是关键字self引用的对象。请记住,Ruby 中的所有方法都是消息,传递给显式或隐式接收者。显式接收器可以通过点符号 (receiver.method) 轻松识别。

每当你在 Ruby 中遇到一行代码时,你应该问自己:“现在谁是 self?”。如果您回答这个问题,您就会知道在哪里查找方法定义。

在您的示例中,有一个由 class 关键字 (class MoviesController) 启动的范围。这意味着隐式接收者(或自身)是类本身。试试这个

class MyClass
self #=> MyClass
end

我能找到的一个很好的初学者教程是 this post 。如果您想更深入地了解 Ruby 对象模型,我推荐 P. Perotta 的《Metaprogramming Ruby》一书。

关于ruby-on-rails - rails : When does methods mentioned in first line of the ControllerClass get executed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42532208/

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