2015-11-27 3 views
1

Как правильно подключиться к удаленному db?Рельсы подключаются к удаленному db

Теперь у меня есть

def db_params 
    {:adapter => "mysql2", 
    :host => "host", 
    :username => "name", 
    :password => "pass", 
    :database => "mydb"} 
    end 



def connect_to_remote_db 
    ActiveRecord::Base.establish_connection(db_params) 
    end 

Когда я пишу connect_to_remote_db это кажется нормально

Я знаю, что удаленный дб имеет таблицу 'Team'

, но когда я пишу Team в консоли он возвращает мне неинициализированную константу Команда

Как правильно обращаться?

+0

это ваша вторая база данных для приложения? – Nithin

+0

@ Nithin, да, мне нужно использовать одну таблицу из удаленного db. – xxx

+0

- этот код внутри вашей модели 'Team'? – nayiaw

ответ

1

Когда вы звоните Team Исходное соединение ActiveRecord просматривается, следовательно, ошибка.

Возможно, вы можете перенести это на класс.

Поскольку я имел дело с подобной ситуацией, вы могли бы установить это соединение в database.yml и использовать его.

development: 
    adapter: mysql2 
    other stuff... 

db_2: 
    adapter: mysql2 
    other stuff.. 

Затем создайте класс

class Team < ActiveRecord::Base 
    establish_connection(:db_2) 
    self.table_name = "teams" 
end 

из - https://stackoverflow.com/a/26574386/2231236

0

Вам нужно создать модель в приложении (из этой удаленной таблицы БД) и установить соединение. Пример:

team.rb

class Team< ActiveRecord::Base 
    establish_connection "remote_db" 
end 

Если у вас есть несколько таблицы, которую необходимо использовать с этой удаленной БД, вы можете сделать модуль и просто включить его в каждой модели для удаленной таблицы БД. пример модуля:

module RemoteConnection 
    extend ActiveSupport::Concern 
    included do 
    establish_connection "remote_db" 
    end 
end 

и чем

class Team< ActiveRecord::Base 
    include RemoteConnection 
end 

Использование database.yml файл для хранения соединений:

... 
remote_db: 
    :adapter => "mysql2", 
    :host => "host", 
    :username => "name", 
    :password => "pass", 
    :database => "mydb" 
... 
Смежные вопросы