如果未启用帐户,则自动注销用户(设备)

时间:2014-02-19 12:32:47

标签: ruby-on-rails devise

如果用户的帐户未启用,我会尝试自动退出用户。

<% if current_user %>
  <% if current_user.enabled == "no" %>
   <% flash.alert = "Your account is disabled! Please contact support for more information" %>
   <% sign_out current_user %>
  <% end %>
<% end %>

但我得到一个“未定义的方法`sign_out'用于#&lt;#:0x007f92001bce68&gt;”错误。我正在使用设计。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

首先将enabled属性设置为布尔类型。

在ApplicationController中

before_filter :check_user

def check_user
  sign_out current_user if current_user && current_user.disabled?
end

在您的用户模型中:

def disabled?
  enabled == false
end

答案 1 :(得分:1)

使用此名称设计方法并根据您的要求进行更新

 def after_sign_in_path_for(resource_or_scope)
        super
        session[:id] = current_user.id
        session[:enable] = current_user.email
        if current_user.enabled = "no"
          flash.alert = "Your account is disabled! Please contact support for more information"          
          sign_out_path
        else
         flash.alert = "Successfully login."
         redirect_to "specify your path for redirect"
       end
  end