我是Ruby的新手,并通过一些教程/屏幕录像工作。我已经到了他们正在讨论before_filter
回调的部分,它使用了一些对我来说有点奇怪的语法。我不知道这是否是红宝石的一个特征,是否有一些轨道魔法,并且希望有人能够让我直接或者指向正确的方向w/r/t手册从Ruby类中调用方法? (或者这是轨道魔术)
这是一个代码从截屏视频片段我看
class MachinesController < ApplicationController
#...
before_filter :login_required, :only => [:report]
#...
def index
#etc...
end
def login_required
#etc...
end
end
在轨的情况下,我的理解是before_filter
是一个回调,这将触发login_required
方法时report
动作被调用。然而,我不清楚它是在ruby的背景下。在其他语言中,类通常包含大括号内定义的方法,属性,类变量和常量。
但是,这看起来像是它在类中的一个函数调用,并且一些实验表明,您可以将代码放入类定义中,并在程序运行时调用它。它是否正确?如果是这样,是否有特殊的上下文规则将代码内联到类似的类中? (即rails中的before_filter函数是否知道它被调用的是什么类)如果不是,Rail在这里做什么魔术?
国际海事组织你应该选择莎拉梅的答案作为你选择的答案,它提供了最好的和最完整的解释。 – horseyguy 2010-01-23 00:38:39
莎拉的回答非常好,但这是我没有问过的问题。我对类中的方法的调用感到困惑,这是你在PHP或Java中无法做到的。我想知道这是否是一些轨道魔法,或者如果Ruby支持这一点,并且如果Ruby支持这一点,那么在一个类中不同的w/r/t调用代码是什么。乔纳森回答说,解释了自我如何改变了身份。 – 2010-01-23 04:00:16
也许这个问题应该编辑一下,我想的是这样的:“Ruby:从类定义中调用函数” – 2012-05-23 22:23:45