使用来自引擎模型的主应用程序中的模型创建belongs_to关系

时间:2012-07-29 07:55:00

标签: ruby-on-rails rails-engines

我自己构建了一个Rails引擎,要求主应用程序有一个Users表。我需要能够在我的引擎中的一个模型和主应用程序中的Users表之间创建关系。这比仅仅说belongs_to :user更复杂吗?我收到一条错误,指出User对象为零,但是当我使用控制台时,它会返回正确的用户。我的假设是Rails假设我的belongs_to :user调用意味着用户的类与引擎在同一名称空间中,即MyEngine :: User。有没有办法让我明确指定User类是在主应用程序的命名空间而不是引擎的?

3 个答案:

答案 0 :(得分:11)

在您的关联中,显式设置类名,包括命名空间:

belongs_to :user, :class_name => "MyEngine::User"

答案 1 :(得分:4)

我对引擎知之甚少,但您使用::来引用根命名空间,因此您可以使用::User我猜

答案 2 :(得分:1)

默认情况下,引擎会识别出MainApp的用户类,只需说出belongs_to:user即可。我做错了其他事:/。