ActiveRecord'troy'方法在Ruby on Rails中返回一个布尔值?

use*_*052 21 ruby-on-rails return-type destroy ruby-on-rails-3

我正在使用Ruby on Rails 3,我想知道什么类型的返回将具有以下代码:

@user.destroy
Run Code Online (Sandbox Code Playgroud)

我需要这样来处理成功错误的案例,如下所示:

if @user.destroy
  puts "True"
else
  puts "false"
end
Run Code Online (Sandbox Code Playgroud)

可能吗?如果是这样,怎么样?

idl*_*ers 31

在询问之前,你应该尝试一下你所要求的.你在那里得到的将会很好.

如果destroy工作,它将返回对象(它将在if语句中传递为true),如果没有,它将返回false或引发异常,具体取决于它失败的原因.

  • 为了澄清,让我们引用文档:"如果before_destroy回调返回false,则操作被取消,destroy将返回false."(http://edgeapi.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-destroy). (4认同)

and*_*rea 16

这是可能的.destroy方法返回被销毁的对象; 您可以destroyed?在此ActiveRecord对象上使用以检查对象是否被有效销毁:

if @user.destroyed?
  puts "True"
else
  puts "false"
end
Run Code Online (Sandbox Code Playgroud)