hig*_*dth 8 ruby activerecord ruby-on-rails destroy ruby-on-rails-3.1
我维护某人的代码库,他们有这样的东西:
if @widget_part.destroy
flash[:message] = "Error deleting widget part"
else
flash[:message] = "Widget part destroyed successfully"
end
Run Code Online (Sandbox Code Playgroud)
什么destroy回报?可以这样测试吗?我问的原因是我试图使用
flash[:message] = "Error deleting widget part : #{@widget_part.errors.inspect}"
Run Code Online (Sandbox Code Playgroud)
并且没有错误消息所以我很困惑.它给出了类似的东西
#<ActiveModel::Errors:0x00000103e118e8 @base=#<WidgetPart widget_id: 7, ...,
id: 67>, @messages={}>
Run Code Online (Sandbox Code Playgroud)
如果您不确定,可以使用destroyed?方法.destroy的返回值是未记录的,但它只返回冻结的被破坏对象(你不能更新它).它不会返回销毁操作的状态.
虽然通常会破坏对象应该总是成功,但您可以侦听ActiveRecordError.例如,乐观锁定可以在记录销毁时引发ActiveRecord :: StaleObjectError.
正如上面一些人提到的,它destroy不返回布尔值,而是返回一个冻结的对象。此外,它还会更新您调用它的实例对象的状态。这是我编写控制器的方式:
@widget_part.destroy
if @widget_part.destroyed?
flash[:success] = 'The part is destroyed'
else
flash[:error] = 'Failed to destroy'
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |