Railsにてscaffoldしてmigrationしたのにデータベースにcreateされるテーブルのカラムが足りない
Rails2.xにて、scaffold のオプションにてカラムの型を指定しますが、これには大文字小文字の区別がある。誤って大文字を設定してmigrationを実行してしまうと、そのカラムは設定されない。このとき、何もエラーらしきものが発生しないのも注意!(※RadRails上、そう見えるだけなのかもしれない?)
誤ってStringと型指定してしまう
> scaffold user name:String
生成されるマイグレーションファイル
class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.String :name # 正しくは t.string :name t.timestamps end end def self.down drop_table :users end end
migration実行
> rake migration
コンソール上にも、特にエラーもなにも起こらない
生成されたテーブル
name カラムが生成されない
mysql> desc users; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+ 7 rows in set (0.02 sec)