2012-12-04 88 views
5

我有這樣的代碼。使用模塊外部的對象

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 

如果我打電話Foo::DoesSomethingWithActiveRecordUser.new(1)我得到說像undefined method 'find' for Foo::User錯誤消息。

如何從Foo內部調用ActiveRecord用戶?

謝謝。

回答

17

像這樣:

::User.find(user_id) 
+0

我知道我試過了,它沒有工作。但現在看來。你能指出一些關於爲什麼/這是幹什麼的文檔? – mwoods79

+2

By prepending ::您正在訪問頂級名稱空間。否則,ruby會查看當前模塊。 –

+0

我找不到任何關於此的文檔,但它很簡單,就像@ylan-s指出的那樣。它只是將引用錨定到類/模塊名稱空間中的根。 –