rails 6 отношение has_many для нескольких баз данных - PullRequest
1 голос
/ 03 марта 2020

Я младший разработчик RoR. У меня есть эта архитектура:

  • 2 базы данных на разных хостах
  • 1 приложение с несколькими базами данных, установленными на database.yml

в моей первой базе данных, которую я храню Vacancies во второй базе данных, которую я храню Users

VacancyController

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

Как вы можете видеть, я храню с помощью функции rails 6 activeRecord в моей вторичной базе данных.

Модель Vacancy.rb имеет следующее отношение: own_to: пользователь

Модель User.rb имеет следующее отношение: has_many: зависимости вакансий:: delete_all

Таким образом, первый БД не имеет таблицы вакансий и второй БД не имеет таблицы пользователей.

У меня появляется эта ошибка, когда я пытаюсь создать Vacancy:

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

Я думаю, что это происходит, потому что первый БД не имеет таблицы вакансий и второй дБ не имеет таблицы пользователей. Также я не могу создавать таблицы миссий для каждого БД. Как я могу это решить?

Спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Для функций Google, решение состоит в том, чтобы определить отношения как это

модель вакансии

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

Я не знаю, является ли это элегантным решением, но оно работает.

...