Я новичок в Ruby и работаю над некоторыми уроками / скринкастами. Я дошел до раздела, где обсуждается обратный вызов before_filter
, и он использует какой-то синтаксис, что немного странно для меня. Я не знаю, является ли это особенностью рубина, если это какая-то магия рельсов, и надеялся, что кто-то здесь может установить меня прямо или указать мне правильное направление без руководства
Это фрагмент кода из фильма, который я смотрю
class MachinesController < ApplicationController
#...
before_filter :login_required, :only => [:report]
#...
def index
#etc...
end
def login_required
#etc...
end
end
В контексте рельсов я понимаю, что before_filter
- это обратный вызов, который вызовет login_required
метод, когда вызывается действие report
. Тем не менее, мне не ясно, что это в контексте рубина. В других языках классы обычно содержат методы, свойства, переменные класса и константы, определенные в фигурных скобках.
Однако это похоже на вызов функции внутри класса, и некоторые эксперименты показали, что вы можете поместить код в определения класса и вызывать его при запуске программы. Это правильно? Если да, существуют ли специальные контекстные правила для кода, который встроен в подобный класс? (т.е. будет ли функция before_filter в rails знать, из какого класса она была вызвана) Если нет, то какая магия здесь используется rails?