【问题标题】:ActiveRecord 'destroy' method returns a boolean value in Ruby on Rails?ActiveRecord 'destroy' 方法在 Ruby on Rails 中返回一个布尔值?
【发布时间】:2011-06-22 18:36:36
【问题描述】:

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

@user.destroy

我需要它来处理 successfault 的情况,如下所示:

if @user.destroy
  puts "True"
else
  puts "false"
end

有可能吗?如果有,怎么做?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 return-type destroy


    【解决方案1】:

    在提问之前,您应该先尝试一下您要问的内容。你所拥有的一切都会很好地工作。

    如果销毁有效,它将返回对象(将在 if 语句中作为 true 传递),否则,它将返回 false 或引发异常,具体取决于失败的原因。

    【讨论】:

    • 为了澄清让我们引用文档:“如果 before_destroy 回调返回 false,则操作被取消并且 destroy 返回 false。” (edgeapi.rubyonrails.org/classes/ActiveRecord/…)。
    • 我觉得你有点苛刻。官方文档并没有真正说明其他失败路径的返回值(例如来自db或after_destroy回调),并且很难模拟一个。
    【解决方案2】:

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

    if @user.destroyed?
      puts "True"
    else
      puts "false"
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多