我一直在研究源代码以进行设计,因为我一生无法弄清楚下面的代码块是如何工作的(full source here)
def mapping
@mapping ||= begin
mapping = Devise.mappings[scope]
raise "Could not find mapping for #{scope}" unless mapping
mapping
end
end
我认为可以理解这段代码的大部分内容,但是无法找到范围变量的声明/定义位置。我搜索了存储库(及其继承的存储库),并查看了可用于尝试更好地了解此处发生情况的测试,但在任何地方都找不到任何提到scope
变量的情况。我仍在学习红宝石,所以我是否错过了一些我在工作中不知道的明显/语言构造?
答案 0 :(得分:1)
这是warden
的东西。检查一下
https://github.com/wardencommunity/warden/blob/master/lib/warden/strategies/base.rb
此行
class Base < ::Warden::Strategies::Base
应该给您一个提示:)