Ruby on Rails:before_filter =>:only_when_user_is_logged_in

the*_*gah 9 ruby-on-rails

使用Ruby on Rails,我想在过滤操作之前,但仅在用户登录时才这样做.

这怎么可能?

now*_*owk 18

before_filter :only_when_user_is_logged_in, :only => :the_action
Run Code Online (Sandbox Code Playgroud)

或多个

before_filter :only_when_user_is_logged_in, :only => [:the_action, :another_action]
Run Code Online (Sandbox Code Playgroud)

另一方面,您也可以提供:except => :this_action选项


Mic*_*igh 16

我想你只是在用户登录时才会询问如何运行 before过滤器.没有内置的语义,但内联很容易:

class SomeController < ApplicationController
  before_filter :do_something

  def do_something
    if logged_in?
      # the stuff you want to do
    end
  end
end
Run Code Online (Sandbox Code Playgroud)


小智 11

在过滤器之前使用一个可选块,该块传递给当前控制器实例,因此您可以执行以下操作:

before_filter :do_stuff, lambda { |controller| controller.logged_in? }
Run Code Online (Sandbox Code Playgroud)