作者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