【发布时间】:2015-10-12 07:57:36
【问题描述】:
我已经看到在 Rails 控制器操作中使用了局部变量和对象变量。下面给出了两者的示例:
# Local variable
class MyController < ApplicationController
def some_action
local_variable = Model.find(<some-condition>).delete
end
end
# Object variable
class MyController < ApplicationController
def some_action
@object_variable = Model.find(<some-condition>).delete
end
end
我想知道它们有什么区别以及它们都适合使用的场景。
【问题讨论】:
-
一个区别是你不能在视图中使用控制器中定义的
local_varaibles,但你可以使用object_variables。 -
顺便说一句,你真的不应该使用
delete -
正确使用
.destroy而不是.delete。delete不会调用模型上的任何回调,例如级联销毁(删除父级时销毁子记录)或任何清理。
标签: ruby-on-rails ruby oop variables model-view-controller