update_attributes返回true但字符串未更改

时间:2013-05-29 18:57:41

标签: ruby-on-rails ruby activerecord

以下列方式使用update_attributes时:

title = Post.first.title
title.gsub!(/a/, 'b')
Post.first.update_attributes(:title => title)

我发现标题未正确保存回数据库,当我重新加载时,'a'尚未更改为'b'。

1 个答案:

答案 0 :(得分:2)

ActiveRecord通过查看属性值的对象ID是否已更改来判断属性是否已更改。你传回了同一个对象,这被视为没有被改变。

将代码更改为以下内容将解决问题:

title = Post.first.title
title = title.gsub(/a/, 'b')
Post.first.update_attributes(:title => title)

返回不同的字符串可让ActiveRecord检测到更改并保存到数据库中。