2010-12-20 9 views
2

オブジェクトのタイプを変更するために実行できるクイックコンソールコマンドはありますか?現在はRuby Date型ですが、Ruby Time型にしたいと思います。Ruby on RailsのDBカラムを変更するコマンド

私は、この足場コマンドで開始:

$ rails generate scaffold Post title:string content:text postdate:date 

しかし、私は次のことを行っていることを望む:

$ rails generate scaffold Post title:string content:text postdate:time 

は、コマンドがあり、更新を行うために実行することができますか?

+0

デフォルト:タイムスタンプ(created_at、updated_at)が十分でない理由はありますか? –

+0

誕生日が遅れている可能性があるためです。 – Brig

答えて

3

時々、Railsでも実際のコードを書く必要があります。移行を作成してからchange_columnメソッドを使用してみてください。何かのように

change_column :my_table, :my_column, :new_type 

これは、シェルではなく、データベースの移行ファイルに入れます。

+1

コードを書く?ああ。私はレールに失望しています:) – Brig

2

ミスをマイグレーションセットの永続的な部分にしたくない場合は、単にマイグレーションして(rake db:rollback)、マイグレーションファイルを編集してバックアップを移行するだけです(rake db:migrate)。

:1つのコマンドがあることについてのあなたの質問に答えるには?はいあります。移行を編集した後:

rake db:migrate:redo 

これは、1つのコマンドで "up"を実行した後に "up"を実行します。列の種類を変更する

0

3つのステップ:

ステップ1:

このコードを使用して、新しい移行ファイルを生成します。

rails g migration sample_name_change_column_type 

ステップ2:

行くには/db/migrateフォルダに移動し、作成した移行ファイルを編集します。 2つの異なるソリューションがあります。

  1. def change 
        change_column(:table_name, :column_name, :new_type) 
    end 
    

2.

def up 
     change_column :table_name, :column_name, :new_type 
    end 

    def down 
     change_column :table_name, :column_name, :old_type 
    end 

ステップ3:

このコマンドを実行することを忘れないでください:

rake db:migrate 

私はこのソリューションをテストしていますRails 4ではうまく動作します。

関連する問題