我正在试图找出模型和控制器之间的正确关系和用法,尽管我已经阅读了足够多但我仍然缺少某些东西,因为每次我与动作形成连接时我都会遇到错误。例如;
Controller.rbdef destroy
Map.clear
end
class Map < ActiveRecord::Base
def self.clear
update_attritube something or order.
end
end
所以在模型中有self.clear我认为Map.clear会在Controller中做到这一点。我在这里弄错了什么?
答案 0 :(得分:0)
您的控制器方法没有任何问题 - 这是您的类方法clear
存在缺陷。这段代码:
def self.clear
update_attribute(...)
end
将失败,因为update_attribute
(或update_attributes
)不是有效的ActiveRecord类方法 - 它意味着在模型实例上调用。您可以使用update_all(...)
方法,但这取决于您在此方法中要完成的具体操作。
如果你真的想要更新/软删除单个记录,那么你不应该在类级别工作,而是取一条记录(基于传递的id - 你传递的,对吗?)和在那个实例上调用一些方法来更新它。