命名空间模型中的Rails关联

Joh*_*all 13 namespaces ruby-on-rails model-associations

我正在重做应用程序并从旧应用程序迁移数据.一些模型名称将是相同的,但不是全部.

我正在编写一个rake任务来连接旧数据库,读取记录,做一些事情并将结果写入新数据库.因为一些表名是相同的,所以模型名称是相同的,所以我想为我的模型命名空间

module OldData
    class Account <ActiveRecord::Base
      has_many :subcriptions
      establish_connection $olddb  
    end

    class Subscription <ActiveRecord::Base
      belongs_to :account
      establish_connection $olddb  
    end
end
Run Code Online (Sandbox Code Playgroud)

其中$ olddb是连接到旧数据库所需的哈希

我可以打开帐户记录并将其读取,但帐户模型没有订阅关联.最新的Rails文档表明这应该有效.但事实并非如此.

有什么建议?

小智 30

也许你应该尝试明确地设置类名

has_many :subcriptions, class_name: 'OldData::Subscription'
Run Code Online (Sandbox Code Playgroud)

belongs_to :account, class_name: 'OldData::Account' 
Run Code Online (Sandbox Code Playgroud)

  • 如果两个模型位于同一名称空间中,则不需要这样做. (8认同)
  • 我有两个不在同一名称空间的模型,这个答案保存了我的培根.谢谢! (2认同)