2011-06-27 43 views
0
application_controller 

    def database_changer 
    Item.establish_connection(
     :adapter => current_product.db_config.adapter, 
     :host  => current_product.db_config.host, 
     :username => current_product.db_config.username, 
     :password => current_product.db_config.password, 
     :database => current_product.db_config.database 
    ) 
    end 

ユーザーが製品を選択すると、セッション[:product_id]が設定され、この製品のdatabase_changerが呼び出されます。私の質問は、別のユーザーが別の製品を選択したときで、他のユーザーにも影響します。たとえば、次のように奇妙な接続接続の問題

ユーザAの兆候では、あまりにもで製品X. ユーザBの兆候を選択し、彼は彼の ページrefreshs 製品Y.そして今、ユーザAを選択し、

製品Yの項目を参照してくださいどのようにこれが起こっている?

答えて

0

データベース接続は、app/request/sessionに関係なく、アプリケーション全体のクラスで同じになると予想されます。

これを行うより良い方法は、あなたが持っているそれぞれのデータベースソースごとにサブクラスItemを作成し、使用するサブクラスを把握することです。

+0

ありがとうございます。すべてのデータベース構成が動的に作成され、データベースに格納されます。私はdatabase.ymlを使用することはできません。製品が作成されると、そのデータベースが自動的に作成されます。私はこれを行う方法を見つけることができませんでした。 – heroku101

+0

私が理解していない点は、それらがデータベース接続にどのように影響するかということです。ユーザーは接続に切り替えています。接続の確立とは何ですか?その範囲は何ですか?すべてのアプリケーションに影響しますか? – heroku101