Rails指南中的Rails限定引用是什么意思?



输入图片描述

当我在rails指南中阅读这个时,它让我很困惑,根据这个,下面的User类可以加载吗?

因为在Admin中没有User常量,所以rails假设User是一个相对常量,因此类User可以被加载?这太令人困惑了

class User
end
module Admin
end
Admin::User # can load User?

在Ruby 2.5之前它是可以工作的

Admin::User

将被加载,因为Ruby会在Admin的作用域中查找User,然后当它找不到它时,它会继续在顶层作用域中查找(Object -并且那里确实定义了User)。但是这种行为在较新的Ruby版本(2.5+)中已被弃用,所以不-它将不起作用。

没有Ruby on Rails将无法在您的示例中加载Admin::User,因为Admin::User在您的示例中没有定义。

最新更新