0

私はruby-on-railsの初心者です。レーキに疑問があります。create関数は新しいデータベースを作成することです。その後、次のようなコマンドを実行します

rake db:load
rake db:data:load
rake db:schema:load
rake db:migrate
rake db:seed

しかし、dbを作成した後にこのcmdを実行する理由と、aboutcmdの機能について説明します。

アドバイスありがとうございます。

4

2 に答える 2

2

rake -T各タスクの説明を取得するために使用できます。

$ rake -T | grep db
rake db:create                                # Create the database from config/database.yml for the current Rails.env (use db:create:all to create all dbs in the config)
rake db:drop                                  # Drops the database for the current Rails.env (use db:drop:all to drop all databases)
rake db:fixtures:load                         # Load fixtures into the current environment's database.
rake db:migrate                               # Migrate the database (options: VERSION=x, VERBOSE=false).
rake db:migrate:status                        # Display status of migrations
rake db:rollback                              # Rolls the schema back to the previous version (specify steps w/ STEP=n).
rake db:schema:dump                           # Create a db/schema.rb file that can be portably used against any DB supported by AR
rake db:schema:load                           # Load a schema.rb file into the database
rake db:seed                                  # Load the seed data from db/seeds.rb
rake db:setup                                 # Create the database, load the schema, and initialize with the seed data (use db:reset to also drop the db first)
rake db:structure:dump                        # Dump the database structure to db/structure.sql. Specify another file with DB_STRUCTURE=db/my_structure.sql
rake db:version                               # Retrieves the current schema version number

私はあなたが何を求めていたのですか?

編集:

移行の詳細については、http://guides.rubyonrails.org/migrations.htmlを参照してください。

編集2:

rake db:migrateDBスキーマを「適切な」方法で更新できます。新しい移行を作成し(ガイドを読んでください)、新しい列を追加できます。たとえば、インデックスを追加したり、列の名前を変更したりできます。 「時間」内を前後に移動します。移行を実行して、後でロールバックできます。

新しい移行を生成する場合:

$ rails g migration add_new_column_to_some_table後で実行rake db:migrateして、必要な変更に適用することができます(もちろん、この生成された移行の本体を作成する必要があります)。

私はあなたにガイドを読むことをお勧めします:)

編集3:

add_column :users, :price, :floatたとえば、テーブルにprice列を追加します。列のタイプは次のようになります(お金に関連するものを保存するのは最善の方法ではありません!)。この列はデフォルトで表示されます。usersfloatfloatNULL

編集4:

実行された移行に関する情報はschema_migrationsテーブルに保存されます。初めて移行を実行するとversion、この移行の新しいレコードがこのテーブルに追加されます(日付+ファイル名の乱数)。移行をロールバックすると、このレコードが削除されます。移行を2回実行しても、効果はありません。

于 2012-12-08T13:25:04.117 に答える
1

簡単に言えば、db:migrateはデータベースにある既存のデータを破壊しません。したがって、移行を実行すると、そのrakeタスクにより、行った変更からデータが存在できるようになります。

言葉でのワークフロー

  1. あなたcreateは空のデータベースです。
  2. 最初のモデルのデータのテーブルをデータベースに追加する必要があります。これは、でファイルを編集することによって行われますdb/migrate
  3. 次に、2番目のモデルが必要なので、モデルを作成し、db/migrate作成された移行ファイルを編集します。
  4. 既存のデータを破棄せずにデータベースを更新する最も簡単な方法は、を実行することbundle exec rake db:migrateです。これにより、2番目の移行ファイルの内容がデータベースに追加され、既存のデータが損なわれることはありません。

プロジェクト作成後のワークフロー例:

  1. bundle exec rake db:create:all
  2. bundle exec rails generate scaffold Users name:string email:string
  3. bundle exec rake db:migrate
  4. この段階で、bundle exec rails sに移動しlocalhost:3000/users/newて新しいユーザーを作成します。
  5. bundle exec rails generate scaffold Posts title:string body:text
  6. bundle exec rake db:migrate
  7. ブラウザに戻ってに移動するlocalhost:3000/usersと、作成したユーザーが表示されます。
于 2012-12-08T14:31:36.540 に答える