devise_token_auth неопределенная проблема метода 'create_token' - PullRequest
0 голосов
/ 05 июня 2018

В моем приложении rails 5 я использовал гем "devise_token_auth" для разработки API на основе токенов для аутентификации.До даты все работало хорошо, но внезапно я получаю ошибку ниже,

NoMethodError (undefined method `create_token' for #<User:0x00000002268570>

Не могу найти никакого решения в Google.Ниже приведена полная ошибка,

Started POST "/api/v1/auth/sign_in" for ::1 at 2018-06-05 16:32:34 +0530
   (28.8ms)  SET NAMES utf8,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
   (11.0ms)  SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC
Processing by DeviseTokenAuth::SessionsController#create as */*
  Parameters: {"email"=>"admin@example.com", "password"=>"[FILTERED]", "session"=>{"email"=>"admin@example.com", "password"=>"[FILTERED]"}}
Unpermitted parameter: :session
Unpermitted parameter: :session
  User Load (12.3ms)  SELECT  `users`.* FROM `users` WHERE (BINARY email = 'admin@example.com' AND provider='email') ORDER BY `users`.`id` ASC LIMIT 1
Unpermitted parameter: :session
Unpermitted parameter: :session
Completed 500 Internal Server Error in 395ms (ActiveRecord: 92.9ms)

NoMethodError (undefined method `create_token' for #<User:0x00000002268570>
Did you mean?  created_at):

1 Ответ

0 голосов
/ 19 января 2019

Я решил эту ошибку, используя раздел Исключая модули в документации.

# app/models/user.rb
class User < ActiveRecord::Base

  # notice this comes BEFORE the include statement below
  # also notice that :confirmable is not included in this block
  devise :database_authenticatable, :recoverable,
         :trackable, :validatable, :registerable,
         :omniauthable

  # note that this include statement comes AFTER the devise block above
  include DeviseTokenAuth::Concerns::User
end

Включение DeviseTokenAuth :: Concerns :: User - вот что решило проблему с неопределенным методом, ноМне нужен этот раздел, потому что он требовал подтверждения (я поставил include перед блоком devise)

...