database.yml ファイルで定義されたもの以外のデータベースに新しいテーブルを作成したいと考えています。
これが私のdatabase.ymlファイルです:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: main_development
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
test:
adapter: mysql2
encoding: utf8
reconnect: false
database: main_test
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: main_prod
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
「周辺機器」と呼ばれる別のデータベースがあります。そのデータベース内に「retailer_to_domain」というテーブルを作成したいと思います。
これが私の移行ファイルです:
class CreateRetailerToDomains < ActiveRecord::Migration
def connection
ActiveRecord::Base.establish_connection(
:adapter => "mysql2",
:encoding => "utf8",
:reconnect => false,
:database => "peripheral",
:pool => 5,
:username => "root",
:password => "",
:socket => "/var/run/mysqld/mysqld.sock").connection
end
def change
ActiveRecord::Base.connection.create_table :retailer_to_domains do |t|
t.string :name
t.string :domain
t.timestamps
end
end
end
移行ファイルはコマンドによって生成されました:rails generate model RetailerToDomain name:string domain:string
そしてdef connection
、database.yml 構成からデフォルト データベース (「メイン」) をオーバーライドするメソッドを追加しました。
移行 ( rake db:migrate
) を実行すると、retailer_to_domains テーブルが main_development データベースに作成されます。このデフォルトをオーバーライドして、必要な場所にテーブルを作成するための移行を取得するにはどうすればよいですか?
また、RetailerToDomain モデルは、次のような Establish_connection メソッドを使用して、同様の方法でこのテーブルにアクセスすることを期待しています。
class RetailerToDomain < ActiveRecord::Base
establish_connection(
:adapter => "mysql2",
:encoding => "utf8",
:reconnect => false,
:database => "peripheral",
:pool => 5,
:username => "root",
:password => "",
:socket => "/var/run/mysqld/mysqld.sock")
self.table=retailer_to_domain
validates_presence_of :name, :domain
end
ここでアイデアをお寄せいただきありがとうございます!