2009-06-02 7 views
0

たとえば、準備が整ったSQLスキーマがあります。どのようにして私のRailsアプリケーションにインポートして、面白いマイグレーションの代わりに自分の準備したデータベースを使用するのでしょうか。SQLスキーマをRailsにインポートするには

編集:これまで私の質問に誤解がありました。私は、PostgresQLのデータベースアプリケーションが動作しているかどうかを確認しています。これを私のRailsアプリケーションの基礎としてどのように使うのですか?

+0

私の応答とマイクウッドハウスはまだ立っています。 –

答えて

0

データベーステーブルを提供するには、RailsのActiveRecord naming conventionsに従うことをお勧めします。 SQLを実行してデータベースオブジェクトを作成します。その後、通常の方法でRailsモデルを生成できますが、移行ファイルの作成はスキップします。例えば

script/generate --skip-migration User name:string, age:integer 
1

私はレールスキーマに現在のデータベースをダンプして、移行ファイルを生成することを使用します。このようにして、あなたはあなたのデータベースをレールのようにもっとコントロールすることができます。このため 、あなたべき:

  1. 設定データベース設定ファイル(のconfig/database.ymlを)
  2. は、スキーマファイルを作成しますrake db:schema:dumpdb/schema.rb
  3. 使用して、移行ファイル/ファイルを作成を実行します

    - あなたの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 

この方法で、後でアプリケーションを開発する際に、移行を活用できます。

1

これ

def self.up 
    execute <<EOF 
begin; 
    SQL HERE 
commit; 
EOF 
    end 
+0

これは、rake db:migrateを実行するときにマイグレーションでSQLを実行するだけで、どのモデルも手動で設定する必要があります。 –

2

あなたが移行を使用する必要はありません、「面白い」またはそれ以外の場合は行う必要があります。テーブルからモデルを作成するだけです。 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に関する議論があります。

0

あなたの設定/データベースを編集してください。ymlファイルのように:

development: 
    database: [your legacy database name] 
    host: localhost 
    adapter: postgres 

あなたもユーザー名とパスワードキーを含める必要があるかもしれませんが、私は通常postgresのためにしません。あなたはポストグラムにもテストデータベースを設定したいと思うでしょう。

あなたは、このように開発データベースを設定したら、あなたがすることができます:

> rake db:schema:dump 

と結果のファイルで

> rake db:schema:load RAILS_ENV=test 

を使用してテスト・データベースを作成します。

関連する問題