我尝试过实现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。
答案 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 %>