Неожиданное значение edit_password_url с ресурсом Devise и пространством имен - PullRequest
0 голосов
/ 20 октября 2018

Я только что прибыл на новый проект, и текущая конфигурация Devise доставляет мне головную боль.На самом деле все работает, как и ожидалось, кроме одной вещи, edit_password_url, представленной в представлении reset_password_instructions.html.

О моделях:

class User < ApplicationRecord
  devise :confirmable, :database_authenticatable, :invitable,
    :recoverable, :registerable, :rememberable, :trackable, :validatable


class Renter < ApplicationRecord
  belongs_to :user

class Landlord < ApplicationRecord
  belongs_to :user

О маршрутах:

namespace :landlord do
  devise_for :users, controllers: {
      confirmations: 'landlord/users/confirmations',
      passwords: 'landlord/users/passwords',
      registrations: 'landlord/users/registrations',
      sessions: 'landlord/users/sessions',
      invitations: 'devise/invitations'
  }

  authenticate :landlord_user do
    ...
  end
end

namespace :renter do
  devise_for :users, controllers: {
      confirmations: 'renter/users/confirmations',
      passwords: 'renter/users/passwords',
      registrations: 'renter/users/registrations',
      sessions: 'renter/users/sessions',
      invitations: 'renter/users/invitations'
  }

  authenticate :renter_user do
    ...
  end
end

Проблема в том, что, если я попрошу сбросить свой пароль из пространства арендатора, edit_password_url value в письме будет landlord/users/password/edit?reset_password_token=X.

Если я попрошу из помещения арендодателя, у меня будетожидаемое значение landlord/users/password/edit?reset_password_token=X.

Самое смешное, что если я изменю routes.rb, изменив порядок объявления пространств имен (сначала namespace :renter), то значение edit_password_url теперь будет renter/users/password/edit?reset_password_token=X, дажеиз помещичьего пространства ...

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

...