我有两个网站,每个网站都连接到自己独特的数据库。我需要在网站“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
get 与当前登录用户的活动记录混合在一起,但仅在生产中。
好的,所以我根据反馈将我的文件修改为以下内容。仍然无法正常工作...有人可以查看下面的文件并查看我缺少哪些步骤吗?谢谢!
谢谢!我认为这就是我所做的,但我创建了“模型”,而且,作为一个新手,我不确定 Rails 是否会正常生成它......
仍然失败,您介意看看以下内容,看看您是否看到我做错了什么?
首先,这是我想在现有应用程序中连接到的第二个数据库的“旧”数据库模型(请注意,执行“文件加载”是我不会出错的唯一方法。):
class MMSDB < ActiveRecord::Base
self.abstract_class = true #important!
config = YAML::load(File.open("#{RAILS_ROOT}/config/database.yml"))
建立连接(配置[“deals_qa”])
结尾
其次,这是调用“MMSDB”模型的模型(见上文)
class Redirect < MMSDB
定义初始化
结尾
检查电子邮件地址是否存在于旧数据库中,如果存在,#increment #database table 'members' 上的重定向计数
我是否需要以某种方式告诉应用程序我想从哪个表中提取,因为旧数据库(成员)中的表 # 与当前应用程序 #database(用户)中的表不同
def email_exists?(email) if find_by_email(email) user = find_by_email(email) user.redirect_count += 1 user.save end end
结尾
然后这是帐户控制器文件中的代码片段。
else
if user == Redirect::User.email_exists?(@email)
@Redirect_Flag = true
else
flash.now[:error] = 'Invalid email or password; please try again.'
end
end