興味深い質問です。私自身の参考のために、この質問のコンテキストでRails Recipe book で提案されているソリューションを要約してみましょう。
1) 最初にdatabase.ymlを追加します
permissions:
adapter: mysql
database: permissions
username: root
password:
socket: /tmp/mysql.sock
2) 外部データベースを呼び出す権限モデルを作成する
class Permission < ActiveRecord::Base
establish_connection :permissions
end
3)権限 ID列を含む権限参照テーブルを作成 (移行) します。
4) PermissionReferenceモデルをPermissionモデルへのリンクとして使用する
class PermissionReference < ActiveRecord::Base
belongs_to :permission
has_and_belongs_to_many :companies,
:join_table => 'companies_permissions',
:foreign_key => 'permission_id'
end
5) 最後に、Company を Permission に関連付けます
class Company < ActiveRecord::Base
has_and_belongs_to_many :permissions,
:class_name => 'PermissionReference',
:join_table => 'companies_permissions',
:association_foreign_key => 'permission_id'
end
外部データベースを呼び出すモデルをサブクラス化することによるリファクタリングを検討したい場合があります
class External < ActiveRecord::Base
self.abstract_class = true
establish_connection :permissions
end
class Permission < External
end