несколько баз данных в реальном времени - PullRequest
2 голосов
/ 25 декабря 2010

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

Я использую mysql, репликация мне не нравится, потому что она предназначена для всей базы данных, и мне нужно использовать только одну внешнюю таблицу.

tnks!

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Ну, мое решение следующее с помощью поста vonconrad.

database.yml

как у Воноконрада пост

MyModelconn.rb

class MyModelconnection < ActiveRecord::Base
  # No corresponding table in the DB.
  self.abstract_class = true

  # Open a connection to the appropriate database depending
  # on what RAILS_ENV is set to.
  establish_connection(:connyml)
end
class User < ActiveRecord::Base

end

В users_controller.rb, где мне нужно вставить во внешнюю таблицу значения данных, где я сохраняю в своей активной записи внутренних пользователей, чтобы внешняя связь была следующей строкой:

MyModelconn.connection.execute('INSERT INTO 'users' (fileld1,filed2)VALUES('#{lcfield1}','#{lcfield2}')')

и БИНГО! workiT! отлично!

Так что вам больше не нужно возвращать AR внутрь.

1 голос
/ 25 декабря 2010

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

Вы можете сделать это довольно просто в Rails.Сначала вам нужно создать еще одну запись в вашем config/database.yml файле:

production:
  ....

development:
  ...

test:
  ...

# Our external database
external: 
  adapter: mysql
  host: some_host
  username: some_username
  password: some_password
  database: some_db

Затем в вашей модели просто скажите Rails, что для этой конкретной модели используйте другое соединение:

class MyModel < ActiveRecord::Base
  establish_connection :external
end

Это отправит любые запросы для MyModel во внешнюю базу данных, в то время как все другие модели будут использовать базу данных производства / разработки как обычно.

Обратите внимание, что при использовании двух разных баз данных вместе,Сам MySQL не позволит вам выполнять определенные функции, такие как соединения.В противном случае с этим подходом у вас все будет в порядке.

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