ruby-on-rails - 多个数据库上的rails 6 has_many关系
问题描述
我是初级 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 模型有下一个关系:belongs_to :user
User.rb 模型有下一个关系:has_many :vacancies,dependent: :delete_all
所以第一个数据库没有空缺表,第二个数据库没有用户表。
尝试创建时出现此错误Vacancy
:
Mysql2::Error: Table 'secondary.users' doesn't exist
我认为发生这种情况是因为第一个数据库没有空缺表,第二个数据库没有用户表。我也不能为每个数据库创建任务表。我该如何解决?
谢谢
解决方案
对于 Google 员工的功能,解决方案是定义这样的关系
空缺模型
def user
ActiveRecord::Base.connected_to( database: { reading: :primary } ) do
User.where( id: user_id ).first
end
end
我不知道这是否是优雅的解决方案,但它有效。
推荐阅读
- c# - 我们可以在 C# 中使用单独的线程从 Windows 应用程序打印吗?
- c# - WebApi:ID之间的不匹配
- maven - Using Maven Release plug-in, update non-pom files
- hazelcast - Hazelcast EntryListener:为什么 set() 返回和 oldValue 与 null 不同?
- redirect - 设置主页并创建链接以重定向到具有 Jekyll/Github 页面的其他项目
- c# - 用新的 SQL 数据刷新 ReportViewer
- javascript - Caret disappears in Firefox when saving its position with Rangy
- c# - 如何从 BitmapImage 在 Bitmap 中设置透明背景?
- microsoft-teams - MS Teams 使用图形 API 邀请来宾
- javascript - 在结束标签后附加矩形