Как наилучшим образом обрабатывать подключения к базе данных для каждой модели с помощью ActiveRecord?
-
02-07-2019 - |
Вопрос
Я бы хотел использовать канонический способ сделать это.Мои поиски в Google оказались безуспешными.У меня есть одна модель ActiveRecord, которая должна отображаться в базе данных, отличной от остальной части приложения.Я также хотел бы сохранить новые конфигурации в файле database.yml.
Я понимаю, что следует вызвать establish_connection, но не ясно где.Вот что у меня есть на данный момент, и это не работает:
class Foo < ActiveRecord::Base
establish_connection(('foo_' + ENV['RAILS_ENV']).intern)
end
Решение
Кроме того, хорошей идеей будет создать подкласс вашей модели, использующей другую базу данных, например:
class AnotherBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "anotherbase_#{RAILS_ENV}"
end
И в вашей модели
class Foo < AnotherBase
end
Это полезно, когда вам нужно добавить последующие модели, которые обращаются к той же, другой базе данных.
Другие советы
Хех.Я был прав!Более чисто:
class Foo < ActiveRecord::Base
establish_connection "foo_#{ENV['RAILS_ENV']}"
end
Великий пост в pragedave.pragprog.com.
Не связан с StackOverflow