Ruby 使用模块范围之外的对象
我有这样的代码Ruby 使用模块范围之外的对象,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有这样的代码 class User < ActiveRecord::Base end module Foo class User end end module Foo class DoesSomethingWithActiveRecordUser def initialize user_id User.find(user_id) end end end class用户
class User < ActiveRecord::Base
end
module Foo
class User
end
end
module Foo
class DoesSomethingWithActiveRecordUser
def initialize user_id
User.find(user_id)
end
end
end
class用户
如果我调用Foo::doesMethingWithActiveRecordUser.new(1)
我会收到一条错误消息,上面写着类似于未定义的Foo::User方法“find”
如何从Foo
中调用ActiveRecord用户
谢谢。像这样:
::User.find(user_id)
我知道我试过了,但没用。但现在似乎是这样。你能指出一些关于为什么/为什么这样做的文档吗?通过在::前面加上前缀,你正在访问顶级名称空间。否则,ruby将查看您当前的模块。我找不到任何专门关于此模块的文档,但正如@ylan-s所指出的,它非常简单。它只是在类/模块名称空间中锚定对根的引用。@mwoods79您可以看到一些关于这方面的问题。