作者shelary (台中喵小咩)
看板Ruby
標題[問題] Record 在 new 一筆新資料時的 datetime 物件問題
時間Fri Oct 26 15:15:21 2007
環境:
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
1F:推 dream1129:資料庫中 changed_at 的欄位給預設值或是設定可以NULL 10/26 17:45
2F:推 shelary:設成可以null也是可以..但是就不是 0000-00-00 了 10/26 18:59
3F:→ shelary:就變成要多一個判斷是不是 nil 了..不像 0000-00-00 可以 10/26 19:00
4F:→ shelary:直接輸出不會出錯 10/26 19:00
5F:推 godfat:Time.at 0 可以嗎?Thu Jan 01 08:00:00 +0800 1970 10/26 20:39
6F:推 janyfor:用 update_at 然後資料庫調一調 就會 0000-00-00 00:00:00 10/26 22:50
7F:→ janyfor:忘記是 update_at 還是 updated_at 我記得rails會自動填 10/26 22:52
8F:推 deduce:updated_at 10/26 23:38
9F:→ deduce:如果你懶得把欄位名稱改成 updated_at 10/26 23:38
10F:→ deduce:你也可以在 before_save加上 self.changed_at = Time.now 10/26 23:39
11F:→ deduce:讓model去處理這件事情就好了 10/26 23:39
12F:推 isfore:使用 updated_at,在 created_at != updated_at 時表示更動 10/26 23:39
13F:推 shelary:我知道updated_at但我須要的不只一個.所以用changed舉例 10/27 00:02
14F:→ shelary:然後我是想問怎樣可以存成 0000-00-00 00:00:00 10/27 00:03
15F:→ shelary:我上面有寫了..用 changed_at = Time.now 就不會出錯 10/27 00:03
16F:→ shelary:可是那就不會是 0000-00-00 了丫.. 10/27 00:04
17F:推 shelary:換個方式說..我希望rails在save時..不要存那個欄位 10/27 00:07
18F:→ shelary:這樣一來..mysql就會去使用預設值 0000-00-00 10/27 00:08
19F:推 janyfor:預設值可以調成 0000-00-00 00:00:00 不是用打的喔 10/27 14:41