Railsでカラムを追加する際にreferencesを指定するとdb:migrateが通らない

[2014/07/03追記] Rails4.0以上ならadd_reference使えばOK. [追記終わり]

Stack Overflowに全く同じ状態の投稿があったのでその通りにして解決. 一応こちらにも書いておく.

現象

次のようにreferencesを指定してmigrationファイルを生成したとき,

rails g migration AddUserCategoryToUsers user_category:references
class AddUserCategoryToUsers < ActiveRecord::Migration
  def change
    add_column :users, :user_category, :references, :default => 1
  end
end

db:migrateに失敗する.

rake db:migrate


== AddUserCategoryToUsers: migrating ==============================================
-- add_column(:users, :user_category, :references, {:default=>1})
rake aborted!
An error has occurred, all later migrations canceled:

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'references DEFAULT 1' at line 1: ALTER TABLE `users` ADD `user_category` references DEFAULT 1

.
.
.

解決

referencesメソッドは下のようなテーブル定義のときにしか使えないらしい.

class AddUserCategoryToUsers < ActiveRecord::Migration
  def change
    change_table :users do |t|
      t.references :user_category, :default => 1
    end
  end
end

なので, こんな風にカラムを直接指定してやる必要がある.

class AddUserCategoryToUsers < ActiveRecord::Migration
  def change
    add_column :users, :user_category_id, :integer, :default => 1
    add_index :users, :user_category_id # インデックスを貼る場合
  end
end

後, モデルの関連付けは自分でやる必要がある.