我有一个像这样的自定义用户:
class PersonsController < UsersController
end
然而,在登录后,当我点击“人物/编辑”时,我被重定向到登录页面......我可以在日志中看到以下内容:
按Person处理:: RegistrationsController#编辑为HTML已完成 401在0ms内未经授权
然后我再次被重定向到登录页面,此时我没有丢失会话,我可以点击我的个人资料并查看帐户详细信息。
不确定为什么Devise在编辑操作中存在问题
我的注册控制器中也有以下结构
class Person
class RegistrationsController < Devise::RegistrationsController
end
end
任何帮助,我们都很感激。感谢。
答案 0 :(得分:1)
实际上我找到了解决方案,我不得不在我的自定义Person :: RegistrationsController中重新定义这个方法
def authenticate_scope!
send(:"authenticate_user!", :force => true)
self.resource = send(:"current_user")
end
似乎会话没有自定义的“current_person”方法,但总是一个current_user,因为我使用'users / sign_in'登录(我想在我的系统中为其他自定义用户提供一个公共登录点)。如果我使用'persons / sign_in'登录,则不需要此解决方法。由于某些原因。我不确定为什么,这是来自devise的github repo的原始方法:
def authenticate_scope!
send(:"authenticate_#{resource_name}!", :force => true)
self.resource = send(:"current_#{resource_name}")
end
我希望这可以帮助将来的某个人,问候。
答案 1 :(得分:0)
您自定义的最终目标不明确,但如果您尝试编辑当前用户的信息,我建议您查看此链接。 Devise - How-To:-Allow-users-to-edit-their-password
此示例是编辑用户密码,但如果您需要更多字段,则可以毫无问题地添加它。但是你应该有一个使用Users模型的独立控制器。