2012-08-26 50 views
1

嘿,我正在創建一個導軌3引擎並嘗試訪問安裝引擎的應用程序中的模型。從外部導軌引擎訪問模型

module MyEngine 
    class UsersController < ApplicationController 

    def index 
     @users = User.all 
    end 

如果我調用下面,然後它給我的錯誤:

找不到表「my_engine_users」 - 它會自動尋找如果模型是發動機內部會存在命名空間的配置,但在這種情況下,它在使用引擎的應用程序中定義。

如果我打電話:: User.all而不是User.all,那麼一切工作,但它看起來有點奇怪。這是否是有效的紅寶石,還是有更好的方法來獲取對象?

回答

0

所以,如果我得到你的問題的權利,你有你的引擎模型看起來像這樣:

module MyEngine 
    class User 
    end 
end 

如果上述假設是正確的,你可以通過table_name=在設定的表名模型

module MyEngine 
    class User 
    self.table_name = 'users' 
    end 
end 
+0

不幸的是,無法工作,因爲我沒有訪問User.rb文件。這由正在實現我的rails引擎的用戶定義。 – Nick

+0

好吧,但是現在你的'MyEngine'模塊中有一個用戶類作爲模型的某個地方,可能用於測試目的,對嗎?因爲如果調用不明確的'User',你的錯誤就不會發生。這意味着:如果您測試引擎,請在'MyEngine'模型之外創建測試用戶類,並且您應該沒問題。 –