それぞれ独自のデータベースに接続する 2 つの Web サイトがあります。メールアドレスがウェブサイト「B」データベースに存在することをウェブサイト「A」で検証する必要があります。次のように検証を行っています。
AccountController < ApplicationController
Web サイト「A のクラス」から呼び出されます:
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によって生成されるかどうかはわかりません...
まだ失敗しています。以下を見て、私が間違っていることがわかるかどうかを確認していただけますか?
まず、これは既存のアプリケーションで接続したい 2 番目のデータベースの「レガシー」データベース モデルです (「Fileload」を実行することが、これをエラーにならないようにする唯一の方法であることに注意してください)。
class MMSDB < ActiveRecord::Base
self.abstract_class = true #重要!
config = YAML::load(File.open("#{RAILS_ROOT}/config/database.yml"))
確立_接続(config["deals_qa"])
終わり
次に、これは「MMSDB」モデルを呼び出すモデルです (上記を参照)。
class Redirect < MMSDB
デフ初期化
終わり
電子メール アドレスがレガシー データベースに存在するかどうかを確認し、存在する場合は、データベース テーブル「members」のリダイレクト カウントを #インクリメントします。
# 従来のデータベース (メンバー) のテーブルは現在のアプリケーション #データベース (ユーザー) のテーブルとは異なるため、プルするテーブルをアプリケーションに伝える必要がありますか?
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