Ruby ActiveRecord Создание динамической модели - PullRequest
1 голос
/ 29 марта 2012

Я пытаюсь установить соединение с несколькими БД с ActiveRecord. В настоящее время мне нужно вставить данные в общей сложности 2 базы данных.Существует возможность увеличения баз данных No.Of.

Итак, я создал 2 класса динамически, которые будут расширяться от ActiveRecord::Base

Object.const_set("Connection1",Class.new(ActiveRecord::Base) do
  self.abstract_class = true
  self.establish_connection({
    :host=>"localhost", :username=>"root", :password=>"root", :database=>"db1", :encoding=>"utf8", :adapter=>"mysql2"})
end)

Object.const_set("Connection2",Class.new(ActiveRecord::Base) do
  self.abstract_class = true
  self.establish_connection({
    :host=>"localhost", :username=>"root", :password=>"root", :database=>"db2", :encoding=>"utf8", :adapter=>"mysql2"})
end)

Затем я создал динамические модели, соответственно расширяющиеся от каждого класса

Object.const_set("ConnectionUser1",Class.new(Connection1) do
  self.table_name = 'user'
  def self.foo
    all.count
  end
end)

Object.const_set("ConnectionUser2",Class.new(Connection2) do
  self.table_name = 'user'
  def self.foo
    all.count
  end
end)

Затем, когда япопытался вызвать метод foo

p ConnectionUser1.foo
p ConnectionUser2.foo

Это дает мне ActiveRecord :: ConnectionNotEstablished Ошибка.

Я слышал, что если модель не имеет соединения, ActiveRecord будет подключаться к своему родителю .

Таким образом, в соответствии с этим ConnectionUser1 должен использовать соединение Connection1, а ConnectionUser2 использовать соединение Connection2.

Тогда почему ActiveRecord не удается установить соединение?

Любая помощь будет оценена.
Спасибо.

1 Ответ

1 голос
/ 29 марта 2012

Посмотрите на ссылку ниже, которая показывает, как использовать несколько баз данных с ActiveRecord.

Как мне работать с двумя разными базами данных в рельсах с активными записями?

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