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

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

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

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

我不太了解引擎,但你使用::来引用根命名空间,所以你可以使用::User我猜

结果发动机默认只识别belongs_to:user来识别MainApp的用户类。 我做错了其他事:/。