【问题标题】:rails 6 has_many relation on multiple databases多个数据库上的rails 6 has_many关系
【发布时间】:2020-03-02 22:31:12
【问题描述】:

我是初级 RoR 开发人员。 我有这个架构:

  • 不同主机上的 2 个数据库
  • 1 个应用程序在 database.yml 上设置了多个数据库

在我的第一个数据库中,我将Vacancies 存储在第二个数据库中,我存储Users

空位控制器

def create
    @vacancy = Vacancy.new(vacancy_params)
    ActiveRecord::Base.connected_to(database: { writing: :secondary }) do
        @vacancy.save
    end
end 

如您所见,我在辅助数据库上使用 rails 6 activeRecord 功能进行存储。

Vacancy.rb 模型有下一个关系: 属于_to:用户

User.rb 模型有下一个关系: has_many:空缺,依赖::delete_all

所以第一个数据库没有空缺表,第二个数据库没有用户表。

当我尝试创建 Vacancy 时出现此错误:

Mysql2::Error: Table 'secondary.users' doesn't exist

我认为这是因为第一个数据库没有空缺表,第二个数据库没有用户表。 我也不能为每个数据库创建任务表。 我该如何解决?

谢谢

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-6


    【解决方案1】:

    对于 Google 员工的功能,解决方案是定义这样的关系

    空位模型

    def user
        ActiveRecord::Base.connected_to( database: { reading: :primary } ) do
            User.where( id: user_id ).first
        end
    end
    

    我不知道这是否是优雅的解决方案,但它确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多