我在模型中有一个after_find回调函数,但我需要在特定的控制器操作中禁用它,例如。
def index
@people = People.find(:all) # do something here to disable after_find()?
end
def show
@people = People.find(:all) # after_find() should still be called here!
end
最好的方法是什么?
帮助!
答案 0 :(得分:2)
不要忘记恢复它。也许它会更好。@@ callback_after_find
class People
def self.skip_after_find
@@callback_after_find = false
yield
ensure
@@callback_after_find = true
end
def after_find
return unless @@callback_after_find
...
end
private
@@callback_after_find = true
end
People.skip_after_find do
@people = People.find(:all) # do something here to disable after_find()?
end
答案 1 :(得分:0)
您可以在模型上添加一个标志,以定义是否要执行after_find。
class People
@@callback_after_find = true
def after_find
return unless @@callback_after_find
...
end
end
在您的控制器中,您现在可以激活或不激活此回调
def index
People.callback_after_find = false
@people = People.find(:all) # do something here to disable after_find()?
end
def show
@people = People.find(:all) # after_find() should still be called here!
end