1

たとえば、Post のオブジェクトの値を変更しましたが、検証に合格しませんでした。

my_post = Post.last
my_post.name
# => "foobar"

my_post.name = "something wrong"
my_post.save
# => (0.1ms)  begin transaction
# => (0.0ms)  rollback transaction
# => false
my_post.name
# => "something wrong"

実際の値はまだ「foobar」ですが、新しいオブジェクトを作成せずに返すにはどうすればよいですか?

4

1 に答える 1

3

changesモデル オブジェクトに加えられた変更のハッシュを返します。

my_post.changes["name"][0]  #=> "foobar"

これには、動的に生成されたメソッドを介してアクセスすることもできます。

my_post.name_change[0]

あなたの場合、あなたはすべきです

my_post.name = my_post.name_was unless my_post.save

詳細については、 のドキュメントを参照してActiveModel::Dirtyください。

于 2012-05-03T05:07:02.780 に答える