Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何返回模型';的实际值;该值之后的对象已更改,但未更改';你没救我吗?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何返回模型';的实际值;该值之后的对象已更改,但未更改';你没救我吗?

Ruby on rails 如何返回模型';的实际值;该值之后的对象已更改,但未更改';你没救我吗?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,例如,我更改了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" 实

例如,我更改了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”,但如何在不创建新对象的情况下立即返回它?

返回对模型对象所做更改的哈希值:

my_post.changes["name"][0]  #=> "foobar"
也可以通过动态生成的方法访问:

my_post.name_change[0]
在你的情况下,你应该这样做

my_post.name = my_post.name_was unless my_post.save

有关这方面的更多信息,请参阅的文档。

此外,要直接转到旧值,您可以更直接地调用my_post.name_was