模型和控制器的用法

时间:2014-01-09 19:01:31

标签: ruby-on-rails

我正在试图找出模型和控制器之间的正确关系和用法,尽管我已经阅读了足够多但我仍然缺少某些东西,因为每次我与动作形成连接时我都会遇到错误。例如;

Controller.rb
def destroy
    Map.clear
end

Model.rb

class Map < ActiveRecord::Base

     def self.clear
         update_attritube something or order.
     end

end

所以在模型中有self.clear我认为Map.clear会在Controller中做到这一点。我在这里弄错了什么?

1 个答案:

答案 0 :(得分:0)

您的控制器方法没有任何问题 - 这是您的类方法clear存在缺陷。这段代码:

def self.clear
  update_attribute(...)
end

将失败,因为update_attribute(或update_attributes)不是有效的ActiveRecord类方法 - 它意味着在模型实例上调用。您可以使用update_all(...)方法,但这取决于您在此方法中要完成的具体操作。

如果你真的想要更新/软删除单个记录,那么你不应该在类级别工作,而是取一条记录(基于传递的id - 你传递的,对吗?)和在那个实例上调用一些方法来更新它。