我有两个网站,每个网站都连接到自己独特的数据库。我需要在网站“A”中验证网站“B”数据库中是否存在电子邮件地址。我正在进行如下验证:
来自网站'A的AccountController < ApplicationController
课程:
config = YAML::load(File.open("#{RAILS_ROOT}/config/database.yml"))
ActiveRecord::Base.establish_connection(config["database B"])
if ActiveRecord::Base.connection.select_values("SELECT "database B".X
FROM 'database B".X WHERE 'database B'.X.email = @member_email")
当我在开发和QA环境中测试它但在我的生产环境中失败时,此调用有效。生产中似乎发生的事情是,ActiveRecord的值以及select
与当前登录用户的活动记录混合在一起,但仅限于生产中。
好的,所以我根据反馈将我的文件修改为以下内容。仍然没有工作......有人可以查看下面的文件,看看我错过了哪些步骤?谢谢!
谢谢!我认为这就是我所做的,但我创造了'模型',并且,作为一个新手,我不确定这是否通常由Rails生成...
仍然失败,你介意看看以下内容,看看你是否看到我做错了什么?
首先,这是我想要在现有应用程序中连接的第二个数据库的“遗留”数据库模型(请注意,执行'Fileload'是我唯一可以避免错误输出的方法。):
class MMSDB < ActiveRecord::Base
self.abstract_class = true #important!
config = YAML :: load(File.open(“#{RAILS_ROOT} /config/database.yml”))
establish_connection(CONFIG [ “deals_qa”])
端
其次,这是调用'MMSDB'模型的模型(见上文)
class Redirect < MMSDB
def初始化
端
def email_exists?(电子邮件) 如果find_by_email(电子邮件) user = find_by_email(email) user.redirect_count + = 1 user.save 结束 端
端
然后,这是帐户控制器文件中的代码段。
else
if user == Redirect::User.email_exists?(@email)
@Redirect_Flag = true
else
flash.now[:error] = 'Invalid email or password; please try again.'
end
end
答案 0 :(得分:2)
SubRelassing ActiveRecord :: Base将允许您与不同的数据库建立多个连接。
module DatabaseB
class Base < ActiveRecord::Base
@abstract_class = true
establish_connection(config["database B"])
end
end
class YourAwesomeModel < DatabaseB::Base
set_table_name "X"
# Use your regular active record magic
end
您仍然可以将其他模型与使用ActiveRecord :: Base建立的连接一起用于主数据库。