各社がデータベースを持ち、ユーザーがログインすると、各ユーザーが持つ「company.id」フィールドに応じてデータベースが変更されるマルチ会社Webサイトを開発しています。問題は、会社「X」のユーザーがログオンし、会社「Y」の別のユーザーをログすると、変更されるたびにすべてのログインユーザーに影響を及ぼすデータベースが変更されることです。 にログインするユーザのために、これは、データベースを変更するには、私のコードです:各ユーザーのデータベースを変更します
def set_database
if user_signed_in?
company = (current_user.company_id).to_s.to_sym
ActiveRecord::Base.establish_connection(company)
else
ActiveRecord::Base.establish_connection(:'232')
end
end
変数「会社」は、ユーザの「のcompany_id」の値を取ると、会社のデータベースとの接続を行いますたとえば、会社が "32"の値を持つ場合、database.ymlで接続を行います:
'32':
adapter: sqlserver
mode: dblib
dataserver:
host: host
port: 1433
database: database
username: user
password: pass
timeout: 60000
azure: true
どのようにco uldは、別のデータベースを持つ他のユーザーに影響を与えることなく、各ユーザーにログオンしますか?
これが良い解決策であるかどうかは不明ですが、ユーザーのデータベース情報をセッションに格納してからクエリ用に参照することは可能でしょうか? – bkunzi01