Как лучше всего обрабатывать подключения к базе данных для каждой модели с ActiveRecord? - PullRequest
13 голосов
/ 26 сентября 2008

Я бы хотел канонический способ сделать это. Мои поиски в Google оказались короткими. У меня есть одна модель ActiveRecord, которая должна отображаться в другую базу данных, чем остальная часть приложения. Я хотел бы также сохранить новые конфигурации в файле database.yml.

Я понимаю, что должна быть вызвана Install_connection, но не ясно, где. Вот что я получил до сих пор, и это не работает:

class Foo < ActiveRecord::Base
    establish_connection(('foo_' + ENV['RAILS_ENV']).intern)
end

Ответы [ 2 ]

21 голосов
/ 27 сентября 2008

Кроме того, рекомендуется создать подкласс для вашей модели, использующей другую базу данных, например:

class AnotherBase < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "anotherbase_#{RAILS_ENV}"
end

А в твоей модели

class Foo < AnotherBase
end

Это полезно, когда вам нужно добавить последующие модели, которые обращаются к той же другой базе данных.

5 голосов
/ 26 сентября 2008

Хех. Я был прав! Более чисто:

class Foo < ActiveRecord::Base
    establish_connection "foo_#{ENV['RAILS_ENV']}"
end

Отличный пост на сайте pragedave.pragprog.com .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...