Я только что прибыл на новый проект, и текущая конфигурация 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, но, тем не менее, я не знаю, как решить эту проблему, не касаясь камня..