如何在单个Ruby on Rails模型中访问多个数据源?

时间:2016-06-08 03:07:40

标签: ruby-on-rails ruby database datasource

我目前正在处理的应用程序要求我从单个模型中访问多个数据源。我想知道实现它的最佳方法是什么。我可以做类似以下的事情吗?

class SomeModel < ActiveRecord::Base
  establish_connection :data_source1
  # Get some data from data_source1 and store in a instance variable

  establish_connection :data_source2
  # Get some data from data_source2 and store in a instance variable
end

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

正如@jvillian所说,这是一个非常糟糕的主意。你想要的是两个不同的模型,每个模型都连接到它们各自的数据源,默认情况下ActiveRecord允许这样做。

该部分can be a bit tricky但不会混淆ActiveRecord。

这里的一个大问题是它更喜欢在连接时缓存模式,并在过程的生命周期中持久存储。如果数据库以任何方式存在混乱,那么如果你继续切换连接,你可能会完全弄乱事务规划器,它必须考虑哪些模型存在于哪个数据库中以进行回滚。