4
我創建了一個全新的Rails應用程序,生成一些腳手架和一些模型。經過幾次測試,我意識到由t.timestamps生成的列不包含「traditional」:null => false選項。我需要這種行爲,我看不到這是什麼。Rails生成的遷移沒有設置:null => false到created_at和update_at
我重新創建一個新的應用程序,認爲這是一個新的rails 4功能,但我無法獲得保存行爲。在這個應用程序中,時間戳工作正常。
在一個軌道控制檯「竊聽應用」當我創建一個文章中,我們可以看到:
Loading development environment (Rails 4.0.1)
2.0.0-p247 :001 > Post.create(title:"test")
(0.1ms) begin transaction SQL (8.6ms) INSERT INTO "posts" ("created_at", "title", "updated_at") VALUES (?, ?, ?) [["created_at", Wed, 27 Nov 2013 21:19:01 EST -05:00], ["title", "test"], ["updated_at", Wed, 27 Nov 2013 21:19:01 EST -05:00]]
(0.8ms) commit transaction
=> #<Post id: 1, title: "test", content: nil, excerpt: nil, dashboard: nil, created_at: "2013-11-28 02:19:01", updated_at: "2013-11-28 02:19:01">
2.0.0-p247 :002 > Post.last
Post Load (0.4ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" DESC LIMIT 1
=> #<Post id: 1, title: "test", content: nil, excerpt: nil, dashboard: nil, created_at: nil, updated_at: nil>
的時間戳設置,但在數據庫中不保存。
我想我錯過了一些東西。任何想法如何恢復默認行爲?
編輯:遷移文件
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :title
t.text :content
t.text :excerpt
t.boolean :dashboard
t.timestamps
end
end
end
你可以在這裏發佈你的遷移文件嗎? –
完成。但沒有什麼特別的。我從不在時間戳上添加:null => false選項,由我自己處理。 –
2年前做出了一項更改,使其不爲空。請參閱https://github.com/rails/rails/pull/3334/files。您可能會在那裏找到有用的東西。你在使用相同版本的導軌的地方,它在哪裏工作? –