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

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

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

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

Ответы

Ответ 1

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

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

И в вашей модели

class Foo < AnotherBase
end

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

Ответ 2

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

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

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