Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在两个数据库中复制模型的活动记录操作_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在两个数据库中复制模型的活动记录操作

Ruby on rails 在两个数据库中复制模型的活动记录操作,ruby-on-rails,ruby,Ruby On Rails,Ruby,我们有许多来自世界各地的客户,他们的要求之一是在美国或欧洲存储数据 要做到这一点,我们的一个模型应该在美国/欧洲的两个数据库中复制信息,这意味着如果模型被更新,它还应该为第二个数据库启动更新。若创建了新记录,那个么它应该在第一个数据库中创建,然后在第二个数据库中创建。所以基本上它应该复制AR操作,除了在两个数据库中选择 我已更新database.yml以存储两种数据库配置: development: adapter: mysql2 encoding: utf8mb4 host: 12

我们有许多来自世界各地的客户,他们的要求之一是在美国或欧洲存储数据

要做到这一点,我们的一个模型应该在美国/欧洲的两个数据库中复制信息,这意味着如果模型被更新,它还应该为第二个数据库启动更新。若创建了新记录,那个么它应该在第一个数据库中创建,然后在第二个数据库中创建。所以基本上它应该复制AR操作,除了在两个数据库中选择

我已更新database.yml以存储两种数据库配置:

development:
  adapter: mysql2
  encoding: utf8mb4
  host: 127.0.0.1
  username: xx
  password: xx
  database: _
  pool: 25

development_usa:
  adapter: mysql2
  encoding: utf8mb4
  host: 127.0.0.1
  username: xx
  password: xx
  database: _usa
  pool: 25
在那之后,我从逻辑上考虑将操作重写为save,但是知道有很多方法可以做,比如.save.update\u属性,并查看它们的源代码,它们都调用不同的方法,所以重写所有这些函数太费事了

提交后是否有办法在两个数据库中克隆一个模型?

您应该尝试octopus gem,它允许以下功能

复制

碎片

复制+分片


我脑子里的一个粗略想法是与另一个数据库建立连接。然后有一个after_commit回调,在一个数据库中完成一个操作后会触发该回调。此回调在第二个数据库中重复相同的操作。我希望这能触发一个想法?你也可以在触摸对象时使用触摸后回调。是的,在发布关于触摸后提交/触摸后的问题后,立即触发触摸后回调。这应该作为评论而不是答案发布。