ruby-on-rails - 在 Rails 中, Controller 的前置过滤器中调用的方法是否会针对每个操作运行?

标签 ruby-on-rails ruby ruby-on-rails-3

假设在我的 Rails Controller 中,我有一个方法 set_one(),它将通过 before_filter 调用。这个方法是在 Controller 操作之前每次都被调用,还是在整个 Controller 中运行一次?如果它是一次性的,那么这意味着它创建的实例变量将在整个 Controller 中可用。我认为 Controller 操作是无状态的。如果它在所有操作之前只运行一次,这是否有助于弥合差距?

def set_one
 # do really complex processing and set the variable @one. 
 @one = 1;
end

提前致谢。 :)

最佳答案

before_filter 将为 Controller 的每个请求调用该方法。您可以将其设置为仅针对某些操作运行:

before_filter :authorize, :only => :delete

甚至阻止它在特定操作中运行:

before_filter :authorize, :except => [:index, :show]

顺便说一句,before_filter 的新语法是 before_action

关于ruby-on-rails - 在 Rails 中, Controller 的前置过滤器中调用的方法是否会针对每个操作运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22801233/

相关文章:

ruby-on-rails - 工厂女孩 "Invalid gemspec"期间的 "bundle install"消息(rails 3.1 和 ruby​​ 1.9.2p290)

ruby-on-rails - 如何使用 ruby​​ 在新窗口中打开链接?

ruby-on-rails - Flash 消息 (Rails v.4.1.1) 花括号

ruby-on-rails - 在 Rails 的另一个模块中动态包含模块

ruby-on-rails - 将 JSON 从 API 端点保存到 Ruby on Rails 应用程序中的数据库

ruby-on-rails - 增加数据库中的计数器

ruby-on-rails - PGError : ERROR: invalid byte sequence for encoding "UTF8

ruby-on-rails - 将 CKEditor 与 Rails 3.1 Asset Pipeline 集成

ruby-on-rails - 如何使用连接表制作多模型 tag_cloud?

ruby - Mongomapper/MongoDB : SystemStackError: stack level too deep