我正在使用devise进行身份验证。如何设置登录范围?例如,假设我只想为范围验证用户:
User.where(:active => true)
我清楚了吗?这很简单,但如果需要,我可以详细说明。
(我意识到有一个可锁定模块,但我的实际范围不适用于活跃用户,它更像是current_site.users,其中current_site基于域名)
答案 0 :(得分:14)
只需在用户模型中覆盖这两种方法,检查活动标志是否为 true :
# Called by Devise to see if an user can currently be signed in
def active_for_authentication?
active? && super
end
# Called by Devise to get the proper error message when an user cannot be signed in
def inactive_message
!active? ? :deactivated : super
end
在你的devise.en.yml中,添加正确的错误消息:
devise:
failure:
deactivated: "Luke, I'm your father and your account was locked!"
答案 1 :(得分:1)
你可以使用default_scope ......但这可能会妨碍你。
为什么不覆盖设计的find_for_database_authentication
方法?请参阅the wiki。