Как настроить устройство для 2 моделей с использованием двигателей - PullRequest
0 голосов
/ 12 июня 2018

У меня проблемы с настройкой Devise правильно с двигателями.

В моем движке У меня есть:

config/initializers/devise.rb

config.router_name = :portal_core

config/routes.rb

devise_for :users, class_name: 'PortalCore::User', module: :devise

app/models/portal_core/user.rb

module PortalCore
  class User < ApplicationRecord
    ...
    devise :database_authenticatable, :trackable, :confirmable,
         :recoverable, :rememberable, :validatable, :lockable
  end
end

Все мои тесты проходят здесь.Затем в одном из моих приложений host у меня есть:

config/routes.rb

devise_for :admin_users, class_name: 'AdminUser'

app/models/admin_user.rb

  class User < ApplicationRecord
    ...
    devise :database_authenticatable, :trackable,
     :recoverable, :rememberable, :validatable
  end

Когда я запустилэтот тест в приложении хоста:

context "When not logged in" do
  it "redirect to new user session when try to access index" do
    process :index, method: :get, params:{}
    expect(response).to redirect_to(new_admin_user_session_path)
  end
end

Я получил эту ошибку: NoMethodError: неопределенный метод `portal_core 'для # Devise :: FailureApp: 0x0000000008c9f1f0>

IfЯ монтирую маршруты двигателя в хост-приложении:

mount PortalCore::Engine => '/portal_core'

Затем я получил эту ошибку: Ожидаемый ответ для перенаправления на http://test.host/admin_users/sign_in, но был перенаправлением на http://test.host/.

И если я пытаюсь запустить сервер, он продолжает перенаправлять с 401 Unauthorized

Возможно, какая-то конфигурация отсутствует, но я не могу понять, что.

1 Ответ

0 голосов
/ 12 июня 2018

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

В инициализаторе устройства хост-приложения я установил router_name на nil: config.router_name = nil И это сработало.

Любое другое решение приветствуется!

Спасибо!

...