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 に答える