我的网络应用程序有多个部署 - 每个部署都是一个具有唯一URL的唯一网站.
每个部署都有不同的数据,UI等,但是Postgresql数据库结构非常相似(使用PostGIS).数据库都存在于同一个DB服务器上.我希望1个部署的用户能够登录所有其他部署的应用程序,而无需重新注册.
我想要的是在多个应用数据库之间共享的单个"用户"表.任何在一个应用程序中注册的用户都应该被所有其他应用程序识别.Postgres有可能吗?模式是这样做的吗?
我的环境: Ruby 1.9.2p290,Rails 3.0.9和RubyGem 1.8.8
不幸的是,遇到多个数据库时我遇到了问题.
情况是这样的:我有两个模型连接两个不同的数据库,并建立彼此之间的关联.在每个模型中指定数据库连接,看起来像
class Visit < ActiveRecord::Base
self.establish_connection "lab"
belongs_to :patient
end
class Patient < ActiveRecord::Base
self.establish_connection "main"
has_many :visits
end
Run Code Online (Sandbox Code Playgroud)
遇到以下情况时我遇到了错误
@visits = Visit.joins(:patient)
Run Code Online (Sandbox Code Playgroud)
错误:Mysql2 ::错误:表'lab.patients'不存在:SELECT visits.*FROM visitsINNER JOIN patientsON patients.id一片空白
这里'患者'表在'主'数据库和'实验室'数据库中的'访问'表我怀疑执行代码时,Rails正在考虑'患者'表是'实验室'数据库的一部分[持有'访问'表].