以下列方式使用update_attributes
时:
title = Post.first.title
title.gsub!(/a/, 'b')
Post.first.update_attributes(:title => title)
我发现标题未正确保存回数据库,当我重新加载时,'a'尚未更改为'b'。
答案 0 :(得分:2)
ActiveRecord通过查看属性值的对象ID是否已更改来判断属性是否已更改。你传回了同一个对象,这被视为没有被改变。
将代码更改为以下内容将解决问题:
title = Post.first.title
title = title.gsub(/a/, 'b')
Post.first.update_attributes(:title => title)
返回不同的字符串可让ActiveRecord检测到更改并保存到数据库中。