我重写Devise的Devise::PasswordsController
,所以我可以将它用作RESTful Web服务。为此,我已根据设计的原始Devise::PasswordsController
class覆盖了所有四种方法(new
,create
,edit
和update
)。除了使用名为update
的设计属性的Devise.sign_in_after_reset_password
方法之外,它一直很简单。我发现它是在library module中定义的,但是当我尝试访问它时,我收到以下错误:
NoMethodError in Api::V1::PasswordsController#update
undefined method `sign_in_after_reset_password' for Devise:Module
Extracted source (around line #37):
36 resource.unlock_access! if unlockable?(resource)
37 if Devise.sign_in_after_reset_password
38 flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
39 set_flash_message(:notice, flash_message) if is_flashing_format?
40 sign_in(resource_name, resource)
到目前为止,我尝试require 'devise'
,但它没有用。我用谷歌搜索了一段时间,但也没有找到任何东西。我有点像红宝石和红宝石,所以我真的不知道在哪里看。任何帮助将非常感激。我正在使用RoR 4.2.1
和Ruby 2.2.1 (2015-02-26)
答案 0 :(得分:3)
检查您使用的devise gem的版本。我想你使用的是上一个发布的版本(此时为3.4.1。),但是重写了master的代码。
正如您在此处所见:https://github.com/plataformatec/devise/blob/v3.4.1/app/controllers/devise/passwords_controller.rb Devise::PasswordsController
在当前发布的版本中未使用sign_in_after_reset_password
。
sign_in_after_reset_password
方法:https://github.com/plataformatec/devise/commit/f0992e4a96352dbb2dfec731f46a51f99a013b29