rails ---破坏后对象的价值是多少?

时间:2013-12-14 11:16:18

标签: ruby-on-rails

我是RoR的新手。我想知道在控制器中销毁之后对象(特别是实例变量)的值是多少。

例如,在下面的代码中,在控制器中调用destroy方法后, @cart 对象(实例变量)的值是多少。

#app/controllers/carts_controller.rb
def destroy
    @cart.destroy
    respond_to do |format|
      format.html { redirect_to store_url }
      format.json { head :no_content }
    end
end

此外,我在视图(.html.erb文件)中使用此 @cart 对象来显示购物项列表。在破坏之后,这个 @cart 对象将如何发生在这个视图中。

感谢。

2 个答案:

答案 0 :(得分:1)

这取决于很多事情。

简短的回答是@cart方法调用后.destroy仍未修改。

答案很长,可以是由 ActiveRecord 或您自己的实现调用的一堆callbacks,包括销毁此cart元素的所有相关元素。此外,DB中的记录已被删除,因此如果您尝试加载关系,因为关系通常是 lazy 加载,如果在销毁父元素后加载它,则此关系可以为空。

因此,我建议您在销毁父视图之前加载要在视图中使用的所有元素。

答案 1 :(得分:0)

示例中的

@cart指的是Cart模型的特定实例。

您在此处概述的方式,我假设您使用的是Rails 4,因为实际设置@cart的代码不在您的destroy方法中

DELETE请求通过HTTP进入时会发生什么情况,Rails会转到您的数据存储并返回绑定到@cart的副本,当.destroy被称为数据中的原始项时商店被销毁,@ cart将成为Nil

其他地方使用的

@cart不应受到影响,因为每个实例都与数据存储中的数据相关

希望这能回答你的问题。