我有一个带有一些非标准操作的控制器,例如admin,moderate等。我尝试使用不起作用的钩子before_admin
。是否可以将这些钩子用于我的自定义操作?
抱歉缺乏清晰度。假设我在保存之前有想要发生的事情。在模型中很容易做before_save :do_whatever
。我希望有before_admin :do_something
或before_moderate :do_something
之类的东西,这些是我控制器中的自定义方法。
答案 0 :(得分:1)
如果我理解你,你需要一个before_filter。
class MyController < ActionController::Base
before_filter :do_whatever, :only => :admin
def admin
# Code for your controller action
end
private
def do_whatever
# Code that runs before the admin action
end
end
有关详细信息,请参阅here。
编辑:如果您希望不同的控制器/操作对模型执行不同的操作,则将该逻辑放在控制器中的适当位置。适当的MVC设计使模型不知道操纵它的控制器/动作。现在看起来似乎不方便,但从长远来看,它将大大有助于保持代码清洁和可用。
再次编辑:对不起,你问的是怎么回事,而不是为什么,我完全错过了。你会这样做:
def action
@thing = Thing.find(params[:id])
@thing.boolean = true
@thing.save
end