Devise inactive_message不会显示

时间:2015-07-16 17:55:31

标签: ruby-on-rails devise

我尝试过实现active_for_authentication?和inactive_message在此处记录:

http://www.rubydoc.info/github/plataformatec/devise/Devise/Models/Authenticatable

我已经完成了那里列出的所有内容,但是当用户登录但用户没有活动状态时,非活动消息将不会显示给用户。

我在用户表上设置了一个名为“active”的布尔字段。我的检查将查看用户是否处于活动状态。

我做了一些调试,发现调用了inactive_message方法。我也查看了user.errors,它是空的。

问题是错误消息(inactive_message)没有显示。

我做了一些研究,说这可能是因为监狱长而且你必须实施failure_app,但是我无法找到关于failure_app的任何好的文档并为我的情况实现它。

签名时我得到的确切错误是未经授权的401。

1 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,如果你知道active_for_authentication?方法正在返回false,那么你可能只是在你的视图中没有显示flash。例如,当User enabled返回false时,false具有active_for_authentication?属性。

另外,请确保这些方法不受保护/私有。

# /models/user.rb

def active_for_authentication?
  super && self.enabled == true
end

def inactive_message
  "User account has been disabled"
end

确保在视图中设置了闪光灯,例如。

# /views/layouts/application.html.erb

<% flash.each do |name, msg| %>
  <%= content_tag(:div, msg, class: "alert alert-#{name}") %>
<% end %>