nev*_*ame 3 ruby ruby-on-rails
你可以在红宝石中:
class ApplicationController < ActionController::Base
before_filter :require_login
end
Run Code Online (Sandbox Code Playgroud)
我只是想知道什么是before_filter?它是ActionController :: Base的一个方法吗?
如果我创建ApplicationController的对象会发生什么?before_filter方法会运行吗?
谢谢!
是的,before_filter
是ActionController :: Base上的一个方法.指定的任何内容都before_filter
将在调用操作之前运行.
API文档:http://api.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html#M000316
编辑:
直接写入类时,在将类加载到解释器中时执行该代码.
将其键入IRB:
>> class Hello
>> p "hello"
>> end
"hello"
Run Code Online (Sandbox Code Playgroud)
所以在你提到的情况下,ruby会看到before_filter
方法,并试图找到它.它开始查看它的类,然后它进入父类和父类的父类,依此类推,直到它到达Object
.在这种情况下,它将转到ActionController :: Base类before_filter
,然后查找链接到类,模块和对象.
>> ActionController::Base.class
=> Class
>> ActionController::Base.class.superclass
=> Module
>> ActionController::Base.class.superclass.superclass
=> Object
>> ActionController::Base.class.superclass.superclass.superclass
Run Code Online (Sandbox Code Playgroud)
如果您正在阅读,我强烈推荐使用MetaProgramming Ruby,它可以更好地解释对象模型.
归档时间: |
|
查看次数: |
404 次 |
最近记录: |