0

結合テーブルの日時フィールドを null から true に変更するデータベース移行を作成しようとしていますが、何かが正しく機能していません。これが私のコードです:

class ChangeDateColumnsInCirclesUsers < ActiveRecord::Migration
  def change
    change_column :circles_users, :created_at, :datetime, :null => true
    change_column :circles_users, :updated_at, :datetime, :null => true
  end
end

これは機能していません。これらの null 値を false ではなく true に設定する方法についてのアイデアはありますか?

4

2 に答える 2

1

これを試して

change_column :table_name, :created_at, :datetime, :null => true, :default => nil

そして移行を実行します

于 2012-10-26T10:41:04.510 に答える
0

これで何を達成しようとしていますか?

日時列のデフォルト値を true にすることはできません。

仕様を読む:移行


Rails は、移行スクリプトで動的なデフォルト値をサポートしていません。SO 現在の時刻が必要な場合は、モデル レベルで簡単に追加できます。

after_initialize1)コールバックを使用してデフォルト値を設定する

class Test
  def after_initialize
    self.day ||= Date.today if new_record?
  end
end

t = Test.new
t.day # will return today's date
t.save
t.day # will return today's date

編集:

updated_atコメントの中で、あなたが入力を心配する必要はないことを理解しましたcreated_at。それは、ActiveRecord が既にそれを行っているということです。

したがって、これらの列を削除または変更する必要はありません。

「アクティブ レコードが自動的に入力するタイムスタンプ列 created_at および updated_at も追加されます。」移行から

それが役に立てば幸い!

于 2012-10-26T10:16:03.237 に答える