сам.спасите! создает ошибку аргумента #


Я перезаписываю функцию valid_password Devise следующим образом:

  def valid_password?(password)
   if legacy_password?
     return false unless Devise.secure_compare(self.encrypted_password,
                                               legacy_password(password, self.encrypted_password))

    attributes = { password:               password,
                   password_confirmation:  password,
                   legacy_password:        false }

    save!
   end
   super password
  end

Мой след показывает, что все устанавливается правильно (новый encrypted_password), но когда процесс достигает save! он возвращает #<ArgumentError: wrong number of arguments (0 for 2)>

Помощь ценится!

Обновление:

Когда я просматриваю поля, кажется, что пароль и password_confirmation установлены правильно, но legacy_password-это то, что возвращает ошибку. Кроме того, в консоли, когда я ввожу Пользователь.legacy_password я получаю ту же ошибку. Это проблема с базой данных?

Недавно я добавил legacy_password в качестве миграции.

class AddLegacyPasswordToSpreeUsers < ActiveRecord::Migration
 def up
  add_column :spree_users, :legacy_password, :boolean
 end

 def down
  remove_column :spree_users, :legacy_password
 end

Конец

1 2

1 ответ:

Оказывается, у меня был метод с тем же именем (legacy_password). Когда я пытался обновить атрибут, он вызывал метод (который требовал 2 параметра) и возвращал вышеупомянутую ошибку.