たとえば、準備が整ったSQLスキーマがあります。どのようにして私のRailsアプリケーションにインポートして、面白いマイグレーションの代わりに自分の準備したデータベースを使用するのでしょうか。SQLスキーマをRailsにインポートするには
編集:これまで私の質問に誤解がありました。私は、PostgresQLのデータベースアプリケーションが動作しているかどうかを確認しています。これを私のRailsアプリケーションの基礎としてどのように使うのですか?
たとえば、準備が整ったSQLスキーマがあります。どのようにして私のRailsアプリケーションにインポートして、面白いマイグレーションの代わりに自分の準備したデータベースを使用するのでしょうか。SQLスキーマをRailsにインポートするには
編集:これまで私の質問に誤解がありました。私は、PostgresQLのデータベースアプリケーションが動作しているかどうかを確認しています。これを私のRailsアプリケーションの基礎としてどのように使うのですか?
データベーステーブルを提供するには、RailsのActiveRecord naming conventionsに従うことをお勧めします。 SQLを実行してデータベースオブジェクトを作成します。その後、通常の方法でRailsモデルを生成できますが、移行ファイルの作成はスキップします。例えば
:
script/generate --skip-migration User name:string, age:integer
私はレールスキーマに現在のデータベースをダンプして、移行ファイルを生成することを使用します。このようにして、あなたはあなたのデータベースをレールのようにもっとコントロールすることができます。このため 、あなたべき:
rake db:schema:dump
db/schema.rb
schema.rb
の内容
#db/migrate/001_create_database.rb
class CreateDatabase < ActiveRecord::Migration
def self.up
# the content of schema.rb
end
def self.down
# drop all the tables
end
end
この方法で、後でアプリケーションを開発する際に、移行を活用できます。
これ
def self.up
execute <<EOF
begin;
SQL HERE
commit;
EOF
end
これは、rake db:migrateを実行するときにマイグレーションでSQLを実行するだけで、どのモデルも手動で設定する必要があります。 –
あなたが移行を使用する必要はありません、「面白い」またはそれ以外の場合は行う必要があります。テーブルからモデルを作成するだけです。 Railsの作成者は、「レガシースキーマ」をサポートする必要性を認識するほどスマートです。あなたの場合、
同様class LegacyBook < ActiveRecord::Base
self.primary_key = "isbn"
end
:
プライマリキーがid
と呼ばれていない場合ことに注意してください、あなたは主キーを(「レールによるアジャイルWeb開発の第3版」のP316を参照)を定義する必要があります外部キー名はARの従来のデフォルトスタイルに従わないため、関係定義で明示的に定義する必要があります。
ActiveRecordはすぐにコンポジットプライマリキーをサポートしていません。これは、第5正規形(PKはビジネスドメインで意味のない任意の数の並べ替え)のようなものを想定しています。 composite_primary_keys(普通の方法でgemをインストール)という名前の宝石が少なくとも1つありますが、まだAR 2.3をサポートしていないかもしれません(私がgem list --remote composite
のときはv2.2.2を参照してください)。 Google Groupsに関する議論があります。
あなたの設定/データベースを編集してください。ymlファイルのように:
development:
database: [your legacy database name]
host: localhost
adapter: postgres
あなたもユーザー名とパスワードキーを含める必要があるかもしれませんが、私は通常postgresのためにしません。あなたはポストグラムにもテストデータベースを設定したいと思うでしょう。
あなたは、このように開発データベースを設定したら、あなたがすることができます:
> rake db:schema:dump
と結果のファイルで
> rake db:schema:load RAILS_ENV=test
を使用してテスト・データベースを作成します。
私の応答とマイクウッドハウスはまだ立っています。 –