[問題] Record 在 new 一筆新資料時的 datetime 物件問題

看板Ruby作者 (台中喵小咩)時間17年前 (2007/10/26 15:15), 編輯推噓9(9010)
留言19則, 6人參與, 最新討論串1/1
環境: RoR 1.2.3 狀況: 假設我的資料庫如下: id int(11) name varchar(20) created_at datetime changed_at datetime 當我要 new 一筆新資料時, 會在瀏覽器那裡用 form 送 name 欄位來 例如: <%= text_field 'record', 'name' %> 然後在 Rails 這邊是 @record = Data.new(params[:record]) unless @record.save 有發生錯誤 return end 沒有錯誤 這個時候 rails 會錯誤 錯誤的原因是 changed_at 不能是 nil 我必須加一行 @record.changed_at = Time.now 才不會出錯 可是我就是希望 changed_at 一開始是 0000-00-00 00:00:00 等到後來有異動時, 才去設定 changed_at = Time.now 但是 Rails 似乎不允許我把 changed_at 空著 請問有什麼好方法或建議嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.164.75

10/26 17:45, , 1F
資料庫中 changed_at 的欄位給預設值或是設定可以NULL
10/26 17:45, 1F

10/26 18:59, , 2F
設成可以null也是可以..但是就不是 0000-00-00 了
10/26 18:59, 2F

10/26 19:00, , 3F
就變成要多一個判斷是不是 nil 了..不像 0000-00-00 可以
10/26 19:00, 3F

10/26 19:00, , 4F
直接輸出不會出錯
10/26 19:00, 4F

10/26 20:39, , 5F
Time.at 0 可以嗎?Thu Jan 01 08:00:00 +0800 1970
10/26 20:39, 5F

10/26 22:50, , 6F
用 update_at 然後資料庫調一調 就會 0000-00-00 00:00:00
10/26 22:50, 6F

10/26 22:52, , 7F
忘記是 update_at 還是 updated_at 我記得rails會自動填
10/26 22:52, 7F

10/26 23:38, , 8F
updated_at
10/26 23:38, 8F

10/26 23:38, , 9F
如果你懶得把欄位名稱改成 updated_at
10/26 23:38, 9F

10/26 23:39, , 10F
你也可以在 before_save加上 self.changed_at = Time.now
10/26 23:39, 10F

10/26 23:39, , 11F
讓model去處理這件事情就好了
10/26 23:39, 11F

10/26 23:39, , 12F
使用 updated_at,在 created_at != updated_at 時表示更動
10/26 23:39, 12F

10/27 00:02, , 13F
我知道updated_at但我須要的不只一個.所以用changed舉例
10/27 00:02, 13F

10/27 00:03, , 14F
然後我是想問怎樣可以存成 0000-00-00 00:00:00
10/27 00:03, 14F

10/27 00:03, , 15F
我上面有寫了..用 changed_at = Time.now 就不會出錯
10/27 00:03, 15F

10/27 00:04, , 16F
可是那就不會是 0000-00-00 了丫..
10/27 00:04, 16F

10/27 00:07, , 17F
換個方式說..我希望rails在save時..不要存那個欄位
10/27 00:07, 17F

10/27 00:08, , 18F
這樣一來..mysql就會去使用預設值 0000-00-00
10/27 00:08, 18F

10/27 14:41, , 19F
預設值可以調成 0000-00-00 00:00:00 不是用打的喔
10/27 14:41, 19F
文章代碼(AID): #178PGAoL (Ruby)
文章代碼(AID): #178PGAoL (Ruby)