Devise_token_auth конфликтует? - PullRequest
0 голосов
/ 11 апреля 2019

Сделал новый API в rails 5, используя тег --api по умолчанию, и установил гем devise_token_auth, используя команду rails generate devise_token_auth:install User auth. При выполнении rake:db:migrate я получаю эту ошибку undefined method 'devise' for User (call 'User.connection' to establish a connection), что странно, потому что devise_token_auth построен поверх устройства ..

Таким образом, комментирование маршрутов приводит к ошибке в файле user.rb, содержащем

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable,:omniauthable include DeviseTokenAuth::Concerns::User

После комментирования этих строк он выдает ошибку в контроллер приложения, содержащий: include DeviseTokenAuth::Concerns::SetUserByToken Закомментировав эту строку, я получаю сообщение об ошибке:

Также попытался добавить devise в gemfile и установить devise для пользователей, что тоже не удалось, снова выдав эту ошибку undefined method 'devise' for User (call 'User.connection' to establish a connection)

Ожидаемая миграция,

Получение ошибок Devise

Что нужно сделать, чтобы решить эту проблему?

PS - это был третий API, который я создаю с использованием гема Devise_token_auth, ранее с этой проблемой не сталкивался

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Это сложная проблема, ActiveRecord ORM был жестко запрограммирован внутри драгоценного камня, который раньше был изменен.Эту проблему можно решить, создав и добавив инициализатор устройства, как указано в приведенной ниже документации.

https://devise -token-auth.gitbook.io / devise-token-auth / config / initialization

Есть и другой способ исправить это, добавив следующее в файл модели user.rb.

extend Devise::Models

Существует также открытая проблема в devise_token_auth

https://github.com/lynndylanhurley/devise_token_auth/issues/1276

Где вы можете решить эту проблему / добавить свои мысли для решения этой проблемы.

1 голос
/ 11 апреля 2019

Вы выполнили следующие шаги -

Включите гем в gemfile -

gem 'devise_token_auth'

Запустите генератор:

rails generate devise_token_auth:install User auth

проверьте, добавлена ​​ли нижняя строка в User модель:

include DeviseTokenAuth::Concerns::User

проверьте, добавлена ​​ли нижняя строка в Application controller:

include DeviseTokenAuth::Concerns::SetUserByToken

проверить, добавлена ​​ли нижняя строка в routes.rb:

mount_devise_token_auth_for 'User', at: 'auth'

add extend Devise::Models в пользовательской модели

runrake db:migrate

Можете ли вы попробовать удалить gem devise_token_auth и попробовать выполнить эти шаги?Дайте мне знать, если появится какая-либо ошибка.

...