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 - это новый класс класса Derived класса Base
в модуле ActionController. Что происходит в следующей строке? Is protect_from_forgery
метод в базовом классе или в модуле ActionController? Как это называется? Я не смог найти документацию по рубинам. Я попытался создать метод в базовом классе, но получил ошибки, как показано ниже. Как создать такие специальные команды, которые можно использовать в классе?Что это за синтаксис внутри рубиновых кладов?
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>'
Это методы рельсов, а не рубины. Вот почему вы не можете их найти. [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