Разработайте, когда пытаетесь изменить пароль ПРЕДУПРЕЖДЕНИЕ: Невозможно массово назначить защищенные атрибуты: current_password - PullRequest
2 голосов
/ 11 августа 2011

с rails 3 + devise, я хочу, чтобы пользователь мог сменить свой пароль:

вот вывод журнала:

Started POST "/settings/password/update" for 127.0.0.1 at 2011-08-11 11:37:05 -0700
  Processing by SettingsController#password_update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"QBZP/h0Xg1SOBWh0+JwzFRyC8X7pE50mx1CgeS6+iNY=", "user"=>{"current_password"=>"[FILTERED]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Change my password"}
  User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 3 LIMIT 1
  SQL (0.2ms)  BEGIN
WARNING: Can't mass-assign protected attributes: current_password
  AREL (0.7ms)  UPDATE "users" SET "encrypted_password" = '$2a$10$cjq9eWB41aqeukarMzyciO4adXB3g.gCSwP6OouV0HT9HZI3IVIa6', "updated_at" = '2011-08-11 18:37:06.326258' WHERE "users"."id" = 3
[paperclip] Saving attachments.
  SQL (25.7ms)  COMMIT
Redirected to http://localhost:3000/settings/account
Completed 302 Found in 556ms

Вот метод контроллера для password_update:

  def password_update

    @user = current_user

    if @user.update_attributes(params[:user])
      flash[:notice] = 'Password Updated'
      redirect_to '/settings/account'
    else
      flash[:notice] = 'Error'
      redirect_to '/settings/password'
    end

  end

Есть идеи, почему это происходит?Я не пытаюсь установить current_password, но в соответствии с устройством вам нужно передать его, чтобы обновить пароль, верно?Спасибо

Ответы [ 2 ]

3 голосов
/ 21 августа 2012

Я предпочитаю переопределять метод update_without_password в модели пользователя

def update_without_password(params={})
  params.delete(:current_password)
  super(params)
end
2 голосов
/ 11 августа 2011

Добавьте attr_accessible :current_password к вашей модели пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...