很多时候,不希望改变修改时间,但是默认 save 方法是自己修改了。 怎么才能不修改,麻烦指点一下,谢谢各位了。
#1 楼 @guyanbiao 我希望该字段的涵意是:用户修改内容的时间。 但是管理员审核通过的时候,可能会修改 state 状态字段,这个时候调用 save 方法就会改变“修改时间”了。
更新前ActiveRecord::Base.record_timestamps = false
#update_column
: http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-update_column
这个只要 google 下就有答案,以前有人给出了比较好的解决办法
在 config/initializers 中新建个文件 save_without_timestamps.rb
module ActiveRecord
class Base
def save_without_timestamping
class << self
def record_timestamps; false; end
end
save
class << self
remove_method :record_timestamps
end
end
end
end
然后调用 save_without_timestamping 就可以了
#7 楼 @diudiutang 貌似这个办法是线程不安全的,管理员的操作可能让用户不小心钻了空子
又看了一下,是修改当前对象的 eigenclass,所以在对象不共享的情况下(几乎所有的 AR 使用都是这样)是线程安全的,我刚才说错了
谢谢各位了,最后使用 update_column 处理。今天受益非浅,学到了许多知识!同时,我也感觉自己太浮躁了,我计划系统地学习一下 ruby 和 rails 了!