我希望我的Entry模型使用多个数据库。当客户加入网络时,会自动为该客户创建一个新的数据库。其他型号将使用相同的数据库。这在铁轨上可能吗?
有趣的是,我十分钟前刚刚想出了一个解决方案。。。
给。。。
首先在数据库中定义单独的数据库连接。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
瞧,它将访问遗留数据库,而不是我正在使用的数据库。
可能有更好的解决方案,但这似乎对我有效——希望它能有所帮助!
是否有特殊的体系结构原因需要使用单独的数据库?我想,像这样的"多主页"应用程序的一个更常见的解决方案是在Entry模型上存储一个account_id,并拥有一个数据库。