问题是这样的,在对象改变了几个属性后,调用 save 方法,但是却没有更新数据库。
ruby代码如下:
@@log.debug "before save \ttm.s1=#{tm.s1}\ttm.s2=#{tm.s2}\tfs[14]=#{fs[14]}\tfs[15]=#{fs[15]}\ttm.overf=#{tm.overf}"
tm.s1 = fs[14]
tm.s2 = fs[15]
tm.overf = 1
@@log.debug "after assign \ttm.s1=#{tm.s1}\ttm.s2=#{tm.s2}\tfs[14]=#{fs[14]}\tfs[15]=#{fs[15]}\ttm.overf=#{tm.overf}"
tm.save
tm.reload
@@log.debug "after save \ttm.s1=#{tm.s1}\ttm.s2=#{tm.s2}\tfs[14]=#{fs[14]}\tfs[15]=#{fs[15]}\ttm.overf=#{tm.overf}"
tm 的 get 就没写上来了
log4r打在console上的内容如下:
------------
DEBUG : before save tm.s1=-1 tm.s2=-1 fs[14]=1 fs[15]=0 tm.overf=0
DEBUG : after assign tm.s1=1 tm.s2=0 fs[14]=1 fs[15]=0 tm.overf=1
DEBUG : after save tm.s1=-1 tm.s2=-1 fs[14]=1 fs[15]=0 tm.overf=0
------------
在log/development.log里有这样的记录:
-------------
[4;36;1mSQL (0.000000)[0m [0;1mBEGIN[0m
[4;35;1mSQL (0.000000)[0m [0mCOMMIT[0m
-------------
这个问题让我头疼了几天了,一直没明白。。。
尝试改用
ActiveRecord::Base.connection.execute
来做,有带来了其他问题:他把我设计的一个允许NULL的datetime字段自动填充当前时间了。。。
值得一提的是,在另外一个project下,并没有出现上述问题。
请各位赐教,谢谢了。
其他描述
数据库 mysql
ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
rails -v
Rails 2.1.0
gem -v
1.0.1