让我们在我的rails控制器中说我有一个方法set_one()
,它将通过before_filter
调用。在控制器操作之前每次都会调用此方法,还是在整个控制器中运行一次?如果它是一次性的事情,那么这意味着它创建的实例变量将在整个控制器中可用。我认为控制器动作是无状态的。如果仅在所有操作之前运行一次,这是否有助于缩小差距?
def set_one
# do really complex processing and set the variable @one.
@one = 1;
end
提前致谢。 :)
答案 0 :(得分:6)
before_filter
将为控制器的每个请求调用该方法。您可以将其设置为仅针对某些操作运行:
before_filter :authorize, :only => :delete
甚至阻止它在特定行动中运行:
before_filter :authorize, :except => [:index, :show]
顺便说一下,before_filter
的新语法是before_action