Итак, я знаю, что примерно половина миллиона вопросов об обходе требований пароля для редактирования пользователя, если они прошли проверку подлинности через Facebook. Я обещаю, что прочитал, по крайней мере, 75% из них и до сих пор не могу понять это.Devise Редактировать пользователя не экономить
В принципе, я следил за Carl Edward & Laurie Laine's SO answer here, чтобы создать контроллер регистрации для Devise, который позволит мне обойти проверку пароля, если пользователь редактирует свою учетную запись, а пользователь зарегистрирован в Facebook. Со следующим кодом он, наконец, не выдает ошибку, но ни один из моих обновленных атрибутов не сохраняется.
class RegistrationsController < Devise::RegistrationsController
def update_resource(resource, params)
if current_user.provider == "facebook"
params.delete("current_password")
resource.update_without_password(params)
else
resource.update_with_password(params)
end
end
def update
account_update_params = devise_parameter_sanitizer.sanitize(:account_update)
# required for settings form to submit when password is left blank
if account_update_params[:password].blank?
account_update_params.delete("password")
account_update_params.delete("password_confirmation")
end
@user = User.find(current_user.id)
if @user.update_attributes(account_update_params)
@user.update(account_update_params)
set_flash_message :notice, :updated
update_resource(@user,account_update_params)
# Sign in the user bypassing validation in case their password changed
sign_in @user, :bypass => true
redirect_to after_update_path_for(@user)
else
render "edit"
end
end
end
Я буквально не может понять, что я делаю неправильно, но каждый раз, когда я пытаюсь обновить свой профиль пользователя в качестве зарегистрированного в заверенной Facebook пользователя, ничего не меняет в моем профиле или когда я запрос к базе данных в моем консоль.
Почему вы называете @ user.update (account_update_params) после @ user.update_attributes (account_update_params)? update_attributes() - это просто псевдоним для update(). –
Я добавил, что это не спасет, и я подумал, что это может заставить его сохранить обновленные атрибуты. Я возьму его. Благодаря! Любая идея, почему это не спасает? – ChiefRockaChris
Что вы видите в журнале при сохранении пользователя? –