migrationファイルの調整、テーブル作成
Model で作成された各テーブル用migrationファイルに NOT NULL制約や index を追加します。
制約やindexの付け方にはいろいろな流儀があると思いますが、今回は以下のような考え方で付けます。
- NOT NULL制約は外部キーのようにそこがnullになってしまうと明らかにデータ構造がおかしくなってしまうカラム
- また、テーブルの核になるデータでそのカラムがnullのデータというのはありえないカラム
- index は外部キー等でjoint等で絶対用いられるカラム
どのようなルールにするかは、作成するDBの性格や文化があるので、これが正解だというのはありません。ただし、一つのプロジェクトの中では統一された考え方や一貫性があることは重要だと思います。
例:
class CreateRequests < ActiveRecord::Migration def self.up create_table :requests do |t| t.column :article_id, :integer, :null => false t.column :user_id, :integer, :null => false t.column :coment, :text t.column :created_at, :datetime end add_index :requests, :article_id add_index :requests, :user_id end def self.down drop_table :requests end end class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.column :nickname, :string t.column :blog, :string t.column :cookie_id, :string, :null => false t.column :created_at, :datetime end add_index :users, :cookie_id, :unique => true end def self.down drop_table :users end end
migrationファイルを修正したら、 rake db:migrate でテーブルを作成します。