2011-11-24 4 views
5

これらの列を持つモデル(および表)があります:id,,です。このテーブルにはデータがありますが、私はこのテーブルに列created_atupdated_atを追加したいと思います - 誰も私に助けを与えることができます、それを行う方法?つまり、モデルを作成すると、これらの2つの列が自動的に作成され、何かを保存するときに時間情報が常に自動的に挿入されます。Rails - モデルにタイムスタンプを追加するには?

この2つの列に自動挿入時間データを追加できるようになりましたか?

+0

だから、あなたが希望の既存のモデルを持っていますタイムスタンプを追加するには?どのバージョンのRailsを使用していますか? –

+0

rails activerecordは自動的にタイムスタンプ列を作成します。なぜタイムスタンプ列を追加したいのですか? – megas

+0

@megas、彼は彼の最初の移行からそれらを削除した可能性があります –

答えて

13

これは、あなたのための移行ファイルを作成します。既存のモデル

rails generate migration add_timestamps_to_users 

これにタイムスタンプ列を追加できるようにする必要があります。それを開き、必要な変更

を行い
class AddTimestampsToUsers < ActiveRecord::Migration 
    # in my example i'm using `users` table; change this to match your table name 
    def change_table :users do |t| 
    t.timestamps 
    end 
end 

は、その後、あなたのデータベースの移行マセックの答えは右の中核でありながら、彼は(移行のための正しい構文を使用していないことに留意すべきである

rake db:migrate 
+0

良い答えです、あなたが修正しているモデルの名前と一致するようにコマンドを変更したいことにも注意してください。 –

+0

新しく作成された列にはデフォルト値があり、 "タイムスタンプ"構文では指定できないため、このソリューションはデータを含むテーブルには適用されません。 – Paul

+1

Paul、既存のレコードの日付/時刻の値はどう思いますか?タイムスタンプ列が存在する前に作成されたレコードには 'null'値で十分だと思います。 –

12

"変更"メソッドを忘れてしまった)。だからここ

を修正構文を持つ彼の答えです:

これは、あなたがこれはあなたのための移行ファイルを作成します。既存のモデル

rake generate migration add_timestamps_to_users 

にタイムスタンプ列を追加できるようにする必要があります。その後

rake db:migrate 
4

add_timestampsデータベースを移行、それを開き、必要な変更

class AddTimestampsToModel < ActiveRecord::Migration 
    # in my example i'm using `users` table; change this to match your table name 
    def change 
    change_table :users do |t| 
     t.timestamps 
    end 
    end 
end 

を作ることは、この目的のために、専用のメソッドです:

class AddTimestampsToUsers < ActiveRecord::Migration 
    def change 
    add_timestamps :users 
    end 
end 
関連する問題