我对铁杆比较陌生。我设置了Devise,并希望在用户登录后运行一些回调代码。
查看Warden wiki page,我可以使用“after_set_user”回调来执行此逻辑,例如:
Warden::Manager.after_set_user do |user, auth, opts|
unless user.active?
auth.logout
throw(:warden, :message => "User not active")
end
end
但是,我不确定我应该在哪里存储这些东西。我的第一个想法是我可以把它放在config / initializers / devise.rb中。那是对的吗?在config目录中放置本质上是控制器代码的感觉并不合适。
答案 0 :(得分:20)
应用程序启动时需要使用Warden钩子,所以在devise的config / initializers / devise.rb初始化器中是一个很好的候选者。
但是,使用此Devise功能可以更好地实现您想要实现的行为: