Интересный вопрос. Для справки позвольте мне вкратце изложить решение, предложенное в книге Rails Recipe в контексте этого вопроса.
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) Создать (перенести) Справочную таблицу разрешений с Идентификатор разрешения Столбец
4) Использовать PermissionReference модель в качестве ссылки на Разрешение модель
class PermissionReference < ActiveRecord::Base
belongs_to :permission
has_and_belongs_to_many :companies,
:join_table => 'companies_permissions',
:foreign_key => 'permission_id'
end
5) В конце концов, ассоциируйте компанию с Разрешением
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