ロールベースのアクセス許可を必要とする Rails アプリケーション (「非表示」アプリケーションと呼びましょう) に取り組んでいますが、アプリケーションはユーザー認証を処理しません。Main アプリケーションは暗号化された Cookie を設定し、Hidden アプリケーションはそれを認証の証拠として使用します。
非表示アプリケーションは、さまざまなロールを実装する必要があります。管理者、プロジェクトマネージャー、編集者など。 テーブルとテーブルを作成し、テーブルを使用してユーザーテーブルとロールテーブルの間の関係を使用する認可プラグインを使用しています。これまでのところ、すべてのかなりのバニラのもの。roles
users_roles
has_many
users_roles
課題は、メイン アプリケーションに既にusers
テーブルとテーブルがあることusers_roles
です。Main アプリケーション データベースを使用する (カスタム接続を作成する) Main::User モデルがありますが、ロールを作成して承認インフラストラクチャを活用しようとすると、ActiveRecord が Main::User からの接続情報を使用しているため、操作が失敗します。これusers_roles
は、メイン アプリケーションのテーブルを更新しようとします (これは許可されていません)。habtm 仕様を削除して、has_many マクロを :through オプションで使用して結合テーブルを指定することも試みましたが、接続は Main::User モデルを介して設定されるため、ActiveRecord は引き続き Main データベースを使用します。
次のステップは、Rails レシピ 15「複数のデータベースへの接続」を実装することでしたが、ローカル参照モデルの UsersReferenceusers
がメイン アプリケーションのテーブルを自動的に参照するようにする方法が欠けています。レシピには、「もちろん、このソリューションでは、代替データベースにある製品と一致するように、product_references テーブルに必要な行を作成する必要があります。これは、バッチで行うことも、実行時に自動的に行うこともできます。」二重コピーを維持する必要はありません。425,000 人を超えるユーザーがおり、そのステータスは常に変化しているため、バッチ更新を行うという考えはあまり受け入れられません。
理想的には、Recipe の UsersReference モデルがusers
テーブルへのデリゲートとして機能することを望みます。users
レシピで説明されているように、実行時にテーブルから行を自動的に取得する必要があると思います。これまたはこのようなことをした経験のある人はいますか?あなたの考えに感謝します。