我自己构建了一个Rails引擎,要求主应用程序有一个Users表。我需要能够在我的引擎中的一个模型和主应用程序中的Users表之间创建关系。这比仅仅说belongs_to :user
更复杂吗?我收到一条错误,指出User
对象为零,但是当我使用控制台时,它会返回正确的用户。我的假设是Rails假设我的belongs_to :user
调用意味着用户的类与引擎在同一名称空间中,即MyEngine :: User。有没有办法让我明确指定User类是在主应用程序的命名空间而不是引擎的?
答案 0 :(得分:11)
在您的关联中,显式设置类名,包括命名空间:
belongs_to :user, :class_name => "MyEngine::User"
答案 1 :(得分:4)
我对引擎知之甚少,但您使用::
来引用根命名空间,因此您可以使用::User
我猜
答案 2 :(得分:1)
默认情况下,引擎会识别出MainApp的用户类,只需说出belongs_to:user即可。我做错了其他事:/。