ruby-on-rails – 在after_save中调用类方法

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在after_save中调用类方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这可能是一个愚蠢的观点,但我找不到解决方案.

我有一个带有类方法update_menu的简单模型,我希望在每次保存实例后调用它.

Class Category
  attr_accessible :name,:content


  def self.menu
     @@menu ||= update_menu
  end

  def self.update_menu
     @@menu = Category.all
  end
end

那么获取after_filter调用update_menu的正确语法是什么?

我试过了:

after_save :update_menu

但它在实例(不存在)上查找方法而不在类上查找.

谢谢你的回答.

解决方法

通过删除self使其成为实例方法.
# now an instance method
def update_menu
   @@menu = Category.all
end

在类方法上进行after_save回调没有多大意义.不保存类,实例是.例如:

# I'm assuming the code you typed in has typos since
# it should inherit from ActiveRecord::Base
class Category < ActiveRecord::Base
  attr_accessible :name
end

category_one = Category.new(:name => 'category one')
category_one.save  # saving an instance

Category.save # this wont work

猜你在找的Ruby相关文章