以下のテーブル作成スクリプトを検討してください。
create_table :foo do |t|
t.datetime :starts_at, :null => false
end
デフォルト値を現在の時間として設定することは可能ですか?
以下に示すSQL列定義のレールでDBに依存しない同等のものを見つけようとしています:
Oracle構文
start_at DATE DEFAULT SYSDATE()
MySQL構文
start_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
または
start_at DATETIME DEFAULT NOW()
CURRENT_TIMESTAMP
では現在のトランザクションの開始時刻になるため、同じトランザクションで作成された複数のレコードは同じ値を取得することに注意してください。ステートメントが実行される実際の現在時刻が必要な場合(トランザクションコンテキストは無視)、を確認してくださいCLOCK_TIMESTAMP
。