rails中的多个数据库连接

时间:2011-06-10 10:55:40

标签: ruby-on-rails ruby-on-rails-3 heroku

我希望我的Entry模型使用多个数据库。当客户加入网络时,将为该客户自动创建一个新数据库。其他型号将使用相同的数据库。在轨道中这可能吗?

2 个答案:

答案 0 :(得分:0)

好笑,我刚刚在十分钟前提出了一个解决方案......

这里......

首先在database.yml中定义单独的数据库连接

我已经

production:
 adapter: mysql
 -etc etc-

然后我添加了一个(对我来说,我有一个我想要连接的遗留数据库...)

legacy_production:
  adapter: mysql
  -etc etc-

在适当的不同环境中重复此操作

我接下来要做的是在'lib'中创建一个名为'legacy_model.rb'的新文件,看起来非常像这样

 require 'active_record'

    class LegacyModel < ActiveRecord::Base
      self.abstract_class = true
      establish_connection "legacy_#{RAILS_ENV}"
    end

现在,为了利用这个,我只是创建一个类/模型并从LegacyModel继承,就像这样......

class User < LegacyModel
  -any validations etc you might want-
end

瞧,它会访问遗留数据库而不是我正在使用的数据库。

可能有更好的解决方案,但这似乎对我有用 - 希望它有所帮助!

答案 1 :(得分:0)

您是否需要使用单独的数据库?我想象一个更常见的“多宿主”应用程序解决方案就是在您的Entry模型上存储一个account_id并拥有一个数据库。