migrations
1933 ワード
一、ファイル名
ファイル名は普通のrubyファイル名の前にタイムスタンプを付けて、クラス名の命名規則は普通のrubyクラスと変わらないで、ただ前のタイムスタンプを取り除くだけで、例えばファイル名は2010 0606120001_ですadd_title_to_entries.rbのmigrationクラス名はAddTitleToEntriesであるべきである.
railsはタイムスタンプ部分のみをmigrationを識別するidとし、実行されたすべてのmigrationのidがデータベースのschema_に保存されます.migrationsテーブルにあります.rails 2.1以前のバージョンではmigrationのidは1から増加していましたが、多くの人が協力してプロジェクトを開発する場合、これは問題があると考えやすいです.
もちろん、新しいバージョンのrailsでもenvironment.rb設定:
これで古い方法でmigrationのidを生成することができます.
二、migrationsの修正
migrationを書き間違えて実行した場合は、直接変更しないでください.railsはmigrationを変更したことを知らないので、rake db:migrateを実行するとrailsは何もしません.正しい方法は、rake db:migrate:downまたはrake db:rollbackを先に編集し、最後に再びrake db:migrateを編集することです.
一般的には、エラーがあっても既存のmigrationを編集しないほうがいいです.
最善の方法は、前の書き間違えたmigrationを修復する操作を実行するために新しいmigrationを書くことです.
三、migrationsの作成
generate modelコマンドとgenerate scaffoldコマンドは、modelに対応するデータベース構造を生成するためのmigrationを作成します.テーブルにフィールドを追加するなど、データベース構造を変更する他の操作を実行する場合は、generate migrationを使用して手動でmigrationを作成できます.この3つのmigrationを作成するコマンドのフォーマットは同じです.
migration_nameの名前のフォーマットは、「add_xxx_to_xxx」または「remove_xxx_from_xxx」のように、フィールド名とタイプのリストが続くと、railsは自動的にadd_columnとremove_column命令は生成されたmigrationコードに加算される.例:
次のコードが生成されます.
ファイル名は普通のrubyファイル名の前にタイムスタンプを付けて、クラス名の命名規則は普通のrubyクラスと変わらないで、ただ前のタイムスタンプを取り除くだけで、例えばファイル名は2010 0606120001_ですadd_title_to_entries.rbのmigrationクラス名はAddTitleToEntriesであるべきである.
railsはタイムスタンプ部分のみをmigrationを識別するidとし、実行されたすべてのmigrationのidがデータベースのschema_に保存されます.migrationsテーブルにあります.rails 2.1以前のバージョンではmigrationのidは1から増加していましたが、多くの人が協力してプロジェクトを開発する場合、これは問題があると考えやすいです.
もちろん、新しいバージョンのrailsでもenvironment.rb設定:
config.active_record.timestamped_migrations = false
これで古い方法でmigrationのidを生成することができます.
二、migrationsの修正
migrationを書き間違えて実行した場合は、直接変更しないでください.railsはmigrationを変更したことを知らないので、rake db:migrateを実行するとrailsは何もしません.正しい方法は、rake db:migrate:downまたはrake db:rollbackを先に編集し、最後に再びrake db:migrateを編集することです.
一般的には、エラーがあっても既存のmigrationを編集しないほうがいいです.
最善の方法は、前の書き間違えたmigrationを修復する操作を実行するために新しいmigrationを書くことです.
三、migrationsの作成
generate modelコマンドとgenerate scaffoldコマンドは、modelに対応するデータベース構造を生成するためのmigrationを作成します.テーブルにフィールドを追加するなど、データベース構造を変更する他の操作を実行する場合は、generate migrationを使用して手動でmigrationを作成できます.この3つのmigrationを作成するコマンドのフォーマットは同じです.
ruby script/generate scaffold|model|migration migration_name column_name:column_type
migration_nameの名前のフォーマットは、「add_xxx_to_xxx」または「remove_xxx_from_xxx」のように、フィールド名とタイプのリストが続くと、railsは自動的にadd_columnとremove_column命令は生成されたmigrationコードに加算される.例:
ruby script/generate migration add_content_to_entries content:string
次のコードが生成されます.
class AddContentToEntries < ActiveRecord::Migration
def self.up
add_column :entries, :content, :string
end
def self.down
remove_column :entries, :content
end
end