0

update_attributes按以下方式使用时:

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

我发现标题没有正确保存回数据库,当我重新加载它时,'a'没有变成'b'。

4

1 回答 1

2

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

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

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

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

于 2013-05-29T18:57:40.967 回答