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 回答