Rails Используйте модели с пространством имен и подключены к разным БД - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть приложение rails 5, и мне нужна функциональность отчетов.Я хочу сохранить это в приложении на данный момент, а не использовать двигатель рельсов.Функция создания отчетов подключается к базе данных последователей heroku.

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

module Reporting
 class Base < ActiveRecord::Base
   self.abstract_class = true
   establish_connection("follower_database")
 end
end

module Reporting
  class User < Reporting::Base
    # I would like to avoid copying and pasting all the user model code here and have some fancy way for it to just inherit or included it all so when we add new associations etc. the reporting classes automatically get it..
  end
end

1 Ответ

0 голосов
/ 29 ноября 2018

Необходимо передать полную конфигурацию соединения методу establish_connection.Чтобы поделиться функциональностью обычного класса User, вы можете наследовать от этого класса и включить соединение с базой данных из модуля, например,

module FollowerDatabaseConnection
  def self.included(base)
    base.establish_connection base.configurations['follower_database']
  end 
end

class Reporting::User < User
  include FollowerDatabaseConnection
end

и определить конфигурацию соединения в database.yml

# database.yml
common:
  ...
development:
  ...
...
follower_database:
  adapter: ..
  ...
...