Как наилучшим образом обрабатывать подключения к базе данных для каждой модели с помощью ActiveRecord?

StackOverflow https://stackoverflow.com/questions/141201

Вопрос

Я бы хотел использовать канонический способ сделать это.Мои поиски в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top