Rails 5 Подключиться к двум базам данных? [Дубликат]

  import java.lang. *;  import java.io. *;  public class rupee {public static void main (String [] args) throws IOException {int len ​​= 0, revnum = 0, i, dup = 0, j = 0, k = 0;  int gvalue;  String [] = {«один», «два», «три», «четыре», «пять», «шесть», «семь», «восемь», «девять», «одиннадцать», «двенадцать»,  "Тринадцать", "Четырнадцать", "пятнадцать", "Шестнадцать", "Семнадцать", "Восемнадцать", "Девятнадцать", ""};  String [] twos = {«Десять», «Двадцать», «Тридцать», «Четвертый», «Пятьдесят», «Шестьдесят», «Семьдесят», «восемьдесят», «Девяносто», «»};  System.out.println ("\n Введите значение");  InputStreamReader b = новый InputStreamReader (System.in);  BufferedReader br = новый BufferedReader (b);  GValue = Integer.parseInt (br.readLine ());  if (gvalue == 10) System.out.println («Десять»);  else if (gvalue == 100) System.out.println («Сто»);  else if (gvalue == 1000) System.out.println («Тысяча»);  DUP = GValue;  для (i = 0; dup & gt; 0; i ++) {revnum = revnum * 10 + dup% 10;  Len ++;  DUP = DUP / 10;  } while (j & lt; len) {if (gvalue & lt; 10) {System.out.println (единицы [gvalue-1]);  } else if (gvalue & gt; 10 & amp; & amp; gvalue & lt; = 19) {System.out.println (единицы [gvalue-2]);  ломать;  } else if (gvalue & gt; 19 & amp; & amp; gvalue & lt; 100) {k = gvalue / 10;  GValue = GValue% 10;  System.out.println (двойки [K-1]);  } else if (gvalue & gt; 100 & amp; gvalue & lt; 1000) {k = gvalue / 100;  GValue = GValue% 100;  System.out.println (единицы [k-1] + «Сто»);  } else if (gvalue & gt; = 1000 & amp; gvalue & lt; 9999) {k = gvalue / 1000;  GValue = GValue% 1000;  System.out.println (те [K-1] + "Тыс");  } else if (gvalue & gt; = 11000 & amp; gvalue & lt; = 19000) {k = gvalue / 1000;  GValue = GValue% 1000;  System.out.println (двойки [K-2] + "Тыс");  } else if (gvalue & gt; = 12000 & amp; gvalue & lt; 100000) {k = gvalue / 10000;  GValue = GValue% 10000;  System.out.println (те [GValue-1]);  } else {System.out.println ("");  } j ++;  }}}  
26
задан user1428970 26 June 2013 в 04:46
поделиться

2 ответа

Для множественного подключения к базе данных вам необходимо добавить следующие коды в файл database.yml. Здесь я приведу пример подключения двух баз данных из приложения rails

config / database.yml

development:
  adapter: mysql2
  database: db1_dev
  username: root
  password: xyz
  host: localhost

development_sec:
  adapter: mysql2
  database: db2_dev
  username: root
  password: xyz
  host: localhost

production:
  adapter: mysql2
  database: db1_prod
  username: root
  password: xyz
  host: your-production-ip

production_sec:
  adapter: mysql2
  database: db2_prod
  username: root
  password: xyz
  host: your-production-ip

Здесь я использовал две базы данных для среды разработки и производства.

Теперь нам нужно подключить модель к базам данных. Когда вы запускаете свое приложение в режиме разработки и производства, все модели будут отображаться с помощью параметров разработки и производства db, упомянутых в вашей базе данных.yml. Поэтому для некоторой модели нам нужно подключиться к другой базе данных.

Предположим, что у нас есть две модели User и Category. Таблица users находится в db1_dev и db1_prod, таблица категорий в db2_dev и db2_prod.

Категория модели

class Category < ActiveRecord::Base
  establish_connection "#{Rails.env}_sec"
end

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

class CreateRewards < ActiveRecord::Migration
  def connection
    ActiveRecord::Base.establish_connection("#{Rails.env}_sec").connection
  end

  def change
    # your code goes here.
  end
end

Надеюсь, он сработает для вас :).

67
ответ дан nslocum 16 August 2018 в 05:03
поделиться

Используйте establish_connection для переключения в другую базу данных:

ActiveRecord::Base.establish_connection(
  :adapter  => "mysql",
  :host     => "localhost",
  :username => "myuser",
  :password => "mypass",
  :database => "somedatabase"
)

Вы также можете передать предварительно сконфигурированную среду из database.yml следующим образом:

ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['other_env'])

Вы также можете установить его для определенной модели:

MyClass.establish_connection(...)
15
ответ дан PinnyM 16 August 2018 в 05:03
поделиться
  • 1
    Спасибо! Для подключения к отдельной базе данных за пределами активного класса записи требуется ActiveRecord::Base.configurations['other_env'], в противном случае она фактически не загружает конфигурацию. – KPheasey 10 June 2017 в 00:00
Другие вопросы по тегам:

Похожие вопросы: