class ApplicationController < ActionController::Base
protect_from_forgery #What is this syntax? When is this executed and how to create one?
end
class Comment < ActiveRecord::Base
belongs_to :post
attr_accessible :body, :commenter, :post
end
在第一種情況下,我瞭解ApplicationController是模塊ActionController中新的Derived類,名爲Base
。下一行會發生什麼? protect_from_forgery
是基類還是模塊ActionController中的方法?這叫什麼?我無法在Ruby類文檔中找到。我嘗試在基類中創建一個方法,但得到如下錯誤。我如何創建可以在課堂上使用的特殊命令?ruby clases裏面的語法是什麼?
class Base
def foo
@name = "foo"
end
end
class Der < Base
foo
def bar
@dummy = "bar"
end
end
錯誤:
expr1.rb:62:in `<class:Der>': undefined local variable or method `foo' for Der:Class (NameError)
from expr1.rb:61:in `<main>'
那些是rails方法,而不是ruby。這就是爲什麼你找不到它們。 [forgery_protection](http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html)。這是[ActionController]中的類方法(https://github.com/rails/rails/blob/e7feaff70f13b56a0507e9f4dfaf3ebc361cb8e6/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L102) –
@japed如何創建此類方法?何時執行?爲什麼我的例子不起作用? – balki