Я выполняю авторизацию в приложении в соответствии с this Railscasts episode.Как работает метод .call()?
В одном из методов экземпляра Райан Бейтс использует метод .call, и я не понимаю, что именно он делает. This is the code for the whole model. И это специфический метод:
def allow?(controller, action, resource = nil)
allowed = @allow_all || @allowed_actions[[controller.to_s, action.to_s]]
allowed && (allowed == true || resource && allowed.call(resource))
end
Аргумент ресурс является объектом экземпляра и локальной переменной allowed
должно быть логическое значение.
Видимо, 'разрешено' также может быть proc. Посмотрите на определение ('@allowed_actions [[controller.to_s, action.to_s]]'). –
'allowed' также может быть объектом * метода * .Check' p allowed.instance_of? (Method) '... –
Я предполагаю, что для понимания этого мне нужно понять Proc. И чтобы понять Proc, я полностью должен понимать закрытие. И чтобы понять закрытие, мне лучше взять недельный перерыв и купить несколько книг. Прошу прощения за плохой вопрос. –