ArgumentError:创建回调后:尚未定义send_on_create_confirmation_instructions。 devise_token_auth

时间:2016-01-08 13:09:42

标签: ruby-on-rails devise

我使用devise_token_auth来验证rails-api应用程序。我在我的用户模型中包含了这些设计模块,如下所示。

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :confirmable
end

问题是当我在电子邮件注册终结点上发出POST请求时,http://localhost:3000/authemailpasswordpassword_confirmation作为参数。它只在服务器重启后成功一次。注册用户的所有后续请求都会失败,并显示以下错误:

{
  "status": 500,
  "error": "Internal Server Error",
  "exception": "#<ArgumentError: After create callback     :send_on_create_confirmation_instructions has not been defined>",
  "traces": {
         ...
   }

这意味着我每次要注册用户时都必须重新启动服务器。

这就是我在Gemfile中的内容。

gem 'devise', github: "plataformatec/devise"
gem 'devise_token_auth', github: "lynndylanhurley/devise_token_auth"

修改

当我在ApplicationController进行任何更改并保存时。请求成功,无需重新启动服务器。

2 个答案:

答案 0 :(得分:1)

我终于找到了一个解决方案,问题是createRegistrationsController的{​​{1}}方法中的这一行:

devise_token_auth

我不知道为什么我要跳过发送确认说明,而我想要的行为是在创建用户时自动发送确认。

因此,我使用# override email confirmation, must be sent manually from ctrl resource_class.skip_callback("create", :after, :send_on_create_confirmation_instructions) gem docs中提供的有关控制器ovverride的信息创建了RegistrationController create方法的覆盖。在覆盖中,我注释掉了这一行,一切都按预期工作。

答案 1 :(得分:0)

添加此行之后: resource_class.skip_callback(“ create”,:after,:send_on_create_confirmation_instructions)

只需执行任务

并添加此行以再次设置回调。 resource_class.set_callback(“ create”,:after,:send_on_create_confirmation_instructions)

跳过后,我们需要再次设置回调。