sqlite、rails、小規模webサイト、テスト段階の環境
rails では、データベース運用しながら、止めることなく成長させるために、migrationを使って、テーブルにカラムを追加させることができる。例えば、
$ rails generate migration add_name_to_users name:string
のようにやれば、運用を止めることなく、usersテーブルにnameというstring型のカラムを追加できる。
しかし、このようにやるのは、運用が続いているwebサイトを改良する場合であり、一から設計している場合は、このやり方をすると、add用のmigrationファイルがたまってしまいゴチャゴチャして良くないと思う。なので、自分の場合、下のようにやって、データベースの構成を試行錯誤して作成している。
$ vim bd/migrate/2018072xxxxxx_create_users.rb
#直接マイグレーションファイルにt.string :name のように記述する。
$ rake db:drop
#全てのデータを削除する。
$ bundle exec rake db:migrate
#マイグレションファイルからテーブルを作成する。
$ bundle exec rake db:populate
#fakerを使って、ダミーデータを追加する。
全てのデータを削除するのは、危険であるので消してはいけないデータがないか注意してから実行する。思うに、テーブルを追加したり、削除したりしていると、bundle exec rake db:migrateを実行したときに、エラーが発生し、その度に原因を削除しないといけないので、とても面倒である。そのため、rake db:dropで全てのテーブルを削除してしまえば、エラーの原因を全て削除したことになるので、bundle exec rake db:migrateが成功しやすいということである。
今のところ、この方法で自分は快適に操作しているというメモです。