Так что просто обновление, если кому-то может понадобиться это в будущем.
Поскольку вы обычно не можете вернуть зашифрованный пароль обратно в поле пароля для обновления, я решил, что другой обходной путь - это возможность скрыть два поля пароля при обновлении и выполнить для них отдельное действиечто только пользователь может изменить пароль по электронной почте.
В ActiveAdmin я написал такую форму:
form do |f|
f.inputs 'Admin Details' do
f.input :email
if f.object.new_record?
f.input :password, as: :password
f.input :password_confirmation, :label => "Password Confirmation"
end
end
f.actions
end
Дорожным препятствием для этого решения является проверка.Я должен иметь возможность позволить пользователю обновлять другие поля без необходимости каждый раз обновлять пароль.Это не идеальное решение, но я проверяю их присутствие только при создании.
validates :password,
presence: {
:message => 'Password cannot be blank'
},
:confirmation => true,
on: :create
validates :password,
:confirmation => {
case_sensitive: true
},
:length => {
:within => 8..128,
too_short: "Password is too short (minimum is 8 characters)",
too_long: "Password is too long (maximum is 128 characters)"
},
:unless => lambda{ |adminuser| adminuser.password.blank? },
on: :create
validates :password_confirmation,
presence: {
:message => 'Field cannot be blank'
},
on: :create
Так что да, он отправляет инструкции по изменению пароля по электронной почте, передавая токен