看板 Ruby 關於我們 聯絡資訊
環境: 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
dream1129:資料庫中 changed_at 的欄位給預設值或是設定可以NULL 10/26 17:45
shelary:設成可以null也是可以..但是就不是 0000-00-00 了 10/26 18:59
shelary:就變成要多一個判斷是不是 nil 了..不像 0000-00-00 可以 10/26 19:00
shelary:直接輸出不會出錯 10/26 19:00
godfat:Time.at 0 可以嗎?Thu Jan 01 08:00:00 +0800 1970 10/26 20:39
janyfor:用 update_at 然後資料庫調一調 就會 0000-00-00 00:00:00 10/26 22:50
janyfor:忘記是 update_at 還是 updated_at 我記得rails會自動填 10/26 22:52
deduce:updated_at 10/26 23:38
deduce:如果你懶得把欄位名稱改成 updated_at 10/26 23:38
deduce:你也可以在 before_save加上 self.changed_at = Time.now 10/26 23:39
deduce:讓model去處理這件事情就好了 10/26 23:39
isfore:使用 updated_at,在 created_at != updated_at 時表示更動 10/26 23:39
shelary:我知道updated_at但我須要的不只一個.所以用changed舉例 10/27 00:02
shelary:然後我是想問怎樣可以存成 0000-00-00 00:00:00 10/27 00:03
shelary:我上面有寫了..用 changed_at = Time.now 就不會出錯 10/27 00:03
shelary:可是那就不會是 0000-00-00 了丫.. 10/27 00:04
shelary:換個方式說..我希望rails在save時..不要存那個欄位 10/27 00:07
shelary:這樣一來..mysql就會去使用預設值 0000-00-00 10/27 00:08
janyfor:預設值可以調成 0000-00-00 00:00:00 不是用打的喔 10/27 14:41