Я пытаюсь настроить отношения has_many :through
для двух разных баз данных и столкнулся с проблемой.
Мои модели следующие:
компания
# this model lives in database main_db
class Company < ActiveRecord::Base
has_many :company_custom_plans
has_many :custom_plans, through: :company_custom_plans
end
custom_plan
# this model lives in database other_app_db
class CustomPlan < ActiveRecord::Base
has_many :company_custom_plans
has_many :companies, through: :company_custom_plans
end
модель соединения :
# this model lives in other_app_db
class CompanyCustomPlan < ActiveRecord::Base
belongs_to :custom_plan
belongs_to :company
end
### Schema ###
# create_table "company_custom_plans", force: :cascade do |t|
# t.integer "company_id", limit: 4, null: false
# t.integer "custom_plan_id", limit: 4, null: false
# end
Так что это прекрасно работает на модели Company, но при попытке использовать это отношение на CustomPlan я получаю сообщение об ошибке, потому что has_many: through ищет company_custom_plans
в main_db
вместо other_app_db
пример:
ccp = CompanyCustomPlan.create!(company: company, custom_plan: custom_plan)
company.company_custom_plans == [ccp] # true
company.custom_plans == [custom_plan] # true
custom_plan.company_custom_plans == [ccp] # true
custom_plan.companies # error
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'main_db.company_custom_plans' doesn't exist: SHOW FULL FIELDS FROM `company_custom_plans`
Я пытался поиграть с различными вариантами has_many: through (например, настройка source: 'company'
), но не могу понять, как заставить это работать.
Спасибо