Ruby on rails 3.1 如何在Rails Forem Gem中跳过过滤器之前

Ruby on rails 3.1 如何在Rails Forem Gem中跳过过滤器之前,ruby-on-rails-3.1,Ruby On Rails 3.1,我想允许匿名访问我的论坛。我用的是Forem宝石和Desive宝石。我的ApplicationController中有一个before_过滤器,可确保用户登录 before_filter :authenticate_user! 在我自己的控制器中,我使用skip_filter允许匿名访问操作,但我不知道如何为Forem Gem中的控制器执行此操作 我可以将before_filter语句从我的ApplicationController移动到我自己的每个控制器中,但我不希望这样做。最好的地方是在您

我想允许匿名访问我的论坛。我用的是Forem宝石和Desive宝石。我的ApplicationController中有一个before_过滤器,可确保用户登录

before_filter :authenticate_user!
在我自己的控制器中,我使用skip_filter允许匿名访问操作,但我不知道如何为Forem Gem中的控制器执行此操作


我可以将before_filter语句从我的ApplicationController移动到我自己的每个控制器中,但我不希望这样做。

最好的地方是在您的app/Controllers目录中的forem/application_controller-decorator.rb中的一个文件,其中包含以下内容:

Forem::ApplicationController.class_eval do
  skip_before_filter :authenticate_member!
end
然后,您需要在一个名为config/initiailizers/load_decorators.rb的文件中使用如下行包含此文件:

如果您愿意,这将允许您为任何其他类别的工头指定其他装饰师


我从Spree那里偷来了这个想法,我现在全职工作,我认为它非常可靠。您可以看到它的原始实现。

最好放在您的app/controllers目录中的forem/application\u controller-decorator.rb文件中,该文件包含以下内容:

Forem::ApplicationController.class_eval do
  skip_before_filter :authenticate_member!
end
然后,您需要在一个名为config/initiailizers/load_decorators.rb的文件中使用如下行包含此文件:

如果您愿意,这将允许您为任何其他类别的工头指定其他装饰师


我从Spree那里偷来了这个想法,我现在全职工作,我认为它非常可靠。您可以看到它的原始实现。

谢谢您的回答,Ryan,我想指出该文件应该是:

forem/application\u controller\u decorator.rb,否则它不会加载初始化器代码注意:下划线-而不是破折号

要重新迭代,初始化器代码应为:

Rails.application.config.to_prepare do 
  Dir.glob(Rails.root.join("app/**/*_decorator*.rb")) do |c|
    Rails.configuration.cache_classes ? require(c) : load(c)
  end
end
因此,它将在开发模式中的每个请求上重新加载


希望这能节省一些时间

谢谢你的回答,Ryan,我想指出文件应该是:

forem/application\u controller\u decorator.rb,否则它不会加载初始化器代码注意:下划线-而不是破折号

要重新迭代,初始化器代码应为:

Rails.application.config.to_prepare do 
  Dir.glob(Rails.root.join("app/**/*_decorator*.rb")) do |c|
    Rails.configuration.cache_classes ? require(c) : load(c)
  end
end
因此,它将在开发模式中的每个请求上重新加载


希望这能节省一些时间

我试过了,在我第一次加载论坛索引时它就起作用了。但是,如果我刷新了索引或点击了其他论坛链接,它会将我重定向到登录页面。我找到了答案。load_decorators.rb中的代码需要用Rails.application.config包装。为了准备,我尝试了这个方法,在我第一次加载论坛索引时它就起作用了。但是,如果我刷新了索引或点击了其他论坛链接,它会将我重定向到登录页面。我找到了答案。load_decorators.rb中的代码需要由Rails.application.config.to_prepare do end包装