Rails - モデルにタイムスタンプを追加する方法は?

私は、 id name city の列を持つモデル(およびテーブル)が存在します。この表にはデータがあり、私はこのテーブルに created_at updated_at という列を追加したいと思います。つまり、モデルを作成すると、これらの2つの列が自動的に作成され、何かを保存するときに時間情報が常に自動的に挿入されます。

これらの2つの列に自動挿入時間データを追加することは可能ですか?

5
rails activerecordはタイムスタンプ列を自動的に作成します。なぜタイムスタンプ列を追加したいのですか?
追加された 著者 megas,
@メガ、彼は彼の最初の移行から削除されている可能性があります
追加された 著者 maček,
既存のモデルにタイムスタンプを追加したいのですか?どのバージョンのRailsを使用していますか?
追加された 著者 Devin M,

3 答え

これにより、既存のモデルにタイムスタンプ列を追加することができます

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
13
追加された
新しく作成された列はデフォルト値を持ち、 "タイムスタンプ"構文では指定できないため、このソリューションはデータを含むテーブルには適用されません。
追加された 著者 Paul,
Paul、既存のレコードの日付/時刻の値をどうやって補うのですか? timestamp列が存在する前に作成されたレコードでは、 null の値で十分だと思います。
追加された 著者 maček,
良い答えは、あなたが変更しているモデルの名前に一致するようにコマンドを変更したいことに注意してください。
追加された 著者 Devin M,

mačekの答えはコアではあるが、マイグレーションに正しい構文を使用しないことに注意してください( "変更"方法を忘れてしまった)。

そこで、修正された構文の彼の答えはここにあります:

これにより、既存のモデルにタイムスタンプ列を追加することができます

rake generate migration add_timestamps_to_users

これにより、移行ファイルが作成されます。それを開き、必要な変更を加える

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

その後、データベースを移行します

rake db:migrate
12
追加された

add_timestamps is a dedicated method for this purpose:

class AddTimestampsToUsers < ActiveRecord::Migration
  def change
    add_timestamps :users
  end
end
5
追加された