2016-05-23 3 views
0

Это мой случай использования,Использование нескольких рельсов базы данных 4

В некоторых моделях пользователи подключаются к разным базам данных на разных хостах. Использование establish_connection таким образом,

#charge.rb 
cattr_accessor :ip_address 
ActiveRecord::Base.establish_connection({:adapter => "postgresql", :database => Rails.application.config.database_name, :host => ip_address, 
             :username => Rails.application.config.database_user, :password => Rails.application.config.database_password }) 

Мой вопрос, как я могу установить: хост, dynimically из charges_controller.rb? Каждый другой аргумент метода install_connection «Fixed».

Пробовал использовать параметр before_filter в Application Controller, чтобы установить значение в ip_address безрезультатно. Также попытался использовать инициализацию модели заряда (хотя и плохая идея) безрезультатно. : Хост, возвращает ноль

Спасибо

ответ

0

Снимите «с» в вашем виртуальном атрибуте attr_accessor :host, а затем вставить значение в ваш Params хэш в контроллере, прежде чем перейти к модели с этим Params. Например:

В вашем типичном контроллере вы бы иметь что-то вроде:

def create 
@charge = Charge.create(charge_params) 
@charge.connect_to_proper_host(host) 
end 

private 

def charge_params 
    params.require(:charge).permit(:at1 , :some_other_att, :host) 
end 

UPDATE

Вы можете установить этот метод в вашей модели, а затем ссылаться на него на вновь созданный объект в контроллер:

def connect_to_proper_database(host) 
     self.host = host 
     #Note, You don't need to define self.host if you dont plan on reusing this variable throughout other methods in the model and can instead reference it by simply "host" in that case. 
    ActiveRecord::Base.establish_connection({:adapter => "postgresql", :database => Rails.application.config.database_name, :host => self.host, :username => Rails.application.config.database_user,:password => Rails.application.config.database_password }) 
    end 
+0

Спасибо, но получение «параметра отсутствует или значение пуст» ошибка ... – dev

+0

Sorr y упустил шаг, взгляните на обновление – bkunzi01

Смежные вопросы