【问题标题】:HABTM and has_many through association issue with multiple databaseHABTM 和 has_many 通过与多个数据库的关联问题
【发布时间】:2018-12-20 12:51:19
【问题描述】:

我正在尝试实现两个模型之间的 HATBM 关联,​​其中一个模型指向我的本地数据库表,另一个模型指向外部数据库的表。

本地模型:

class Group < ApplicationRecord
  has_and_belongs_to_many :chains
end

模型连接到外部数据库:

class Chain < ApplicationRecord
  establish_connection :xyz
  self.table_name = 'queues'    
  has_and_belongs_to_many :groups       
end

加入表(chains_groups)字段:

1) :group_id 
2) :chain_id

申请详情:

Rails : 5.2.0
Database : postgresql

每当我尝试在连接表中插入数据时,我都会收到一个错误 ActiveRecord::StatementInvalid,指出 chains_groups 表不存在。似乎是这样,它总是在我的本地数据库中存在的外部数据库上搜索连接表(chains_groups)。我什至尝试实现“has_many :through”关联,但结果是一样的。

【问题讨论】:

  • 如何将数据插入连接表?
  • 使用
  • 在关联的哪一边?
  • 尝试从“组”模型端插入数据时出现问题。
  • 我尝试使用simple rails app 进行复制,但我看到了一个稍微不同的错误:relation "groups_queues" does not exist。当我重命名连接表时,我没有看到错误。

标签: ruby-on-rails-5 associations has-many-through has-and-belongs-to-many


【解决方案1】:

由于 rails 在这种关联方面似乎存在问题,我推荐一种替代方法。将遗留数据库中的数据复制/导入到 Rails 应用程序中,或者将遗留数据库包装在自己的应用程序中,并通过 api 将其呈现给 rails,而不是从 rails 内部连接到多个数据库。

否则,您最好的选择是使用has_many :through 方法,但请记住永远不要通过连接模型的上下文调用关联except

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多