2011-06-10 28 views
0

我想让我的Entry模型使用多个数据库。当客户加入网络时,会自动为该客户创建一个新数据库。其他模型将使用相同的数据库。这可能在铁轨?在rails中的多个数据库连接

+0

你谷歌你的问题?这已被问了上百次。 – Wukerplank 2011-06-10 11:08:53

+0

http://www.google.com/search?q=multiple+database+connection+in+rails&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a – 2011-06-10 15:33:06

+0

I会真的建议不要试图这样做。你需要为每个客户建立一个数据库连接,这根本不能很好地扩展。是否有理由不能将所有客户数据存储在同一个数据库中? – 2011-06-10 17:16:05

回答

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 

瞧,它会访问该文件gacy数据库而不是我正在使用的那个。

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

+0

哦,麻烦,我*只*注意到你想要相同的模型访问多个数据库,我的答案并没有真的这么做!呸!但希望它会给你一些起点。 – Lee 2011-06-10 11:20:50

+0

非常感谢先生 – rubyruby 2011-06-10 11:36:38

0

是否有特定的架构原因需要使用单独的数据库?我想象一个更普通的解决方案,像'multihoming'这样的应用程序就是在你的Entry模型上存储一个account_id并且拥有一个数据库。