0

目前我得到了以下代码SomethingController

class SomethingController < ApplicationController
  skip_filter :authenticate_user!, :only => [:new, :create, :edit, :update]

  #...
  #new
  #create
  #edit
  #update
end

目前:我们希望未经身份验证的用户能够创建或更新Something对象。

问题:由于我们手机身份验证的性质不同,我们希望限制未经身份验证的手机用户在登录/注册之前不能使用此控制器操作。我们可以在过滤器中添加一些条件,例如:

  skip_filter :authenticate_user!, :only => [:new, :create, :edit, :update], :format=>:html
  skip_filter :authenticate_user!, :only => [], :format=>:mobile

如果这不可能,最佳做法是什么?这可以接受吗?

def new 
  if current_user.nil?
    #redirect to sign_in/up actions
  end
  #rest of the method
end
4

1 回答 1

1

仅针对非移动请求跳过过滤器。像下面的东西。

    class SomethingController < ApplicationController
      skip_filter :authenticate_user!, :only => [:new, :create, :edit, :update], :unless => :mobile?

      #...
      #new
      #create
      #edit
      #update

     def mobile?
       #implementation here depends on how you do the mobile detection
     end
    end
于 2013-09-09T13:26:05.480 回答