Ошибка рельсов, неверное количество аргументов 2 для 1?

Я следую за инструктором Майкла Хартла. Я пропустил главу, как было рекомендовано при желании, я получаю ту же ошибку на модели пользователя в rails test для обоих AccountsActivationsController а также PasswordResetsControllerневерное количество аргументов (2 за 1).

Я потратил немного времени на это, пытаясь понять, где я ошибся, но подумал, что спрошу точку зрения посторонних. Я получаю сообщение об ошибке в том же действии в пользовательской модели def authenticated? от valid_user а также edit действия в их соответствующих контроллерах.

В чем может быть проблема?

AccountsActivationsController

class AccountsActivationsController

    def edit
      user = User.find_by(email: params[:email])
      if user && !user.activated? && user.authenticated?(:activation, params[:id])
        user.activate
        user.update_attribute(:activated,    true)
        user.update_attribute(:activated_at, Time.zone.now)
        log_in user
        flash[:success] = "Account activated!"
        redirect_to user
      else
        flash[:danger] = "Invalid activation link"
        redirect_to root_url
      end
    end
end

PasswordResetsController

class PasswordResetsConrtoller
   .
   .
   .

    def valid_user
      unless (@user && @user.activated? &&
              @user.authenticated?(:reset, params[:id]))
      redirect_to root_url
    end
  end
   .
   .

Модель пользователя

class User
   .
   .
   .

    def authenticated?(activation_token)
      return false if activation_digest.nil?
      BCrypt::Password.new(activation_digest).is_password?(activation_token)
    end
   .
   .

2 ответа

Вам не нужно проходить params[:id] просто передайте :resetЯ думаю, что это будет работать для вас.

Вы передаете два аргумента User#authenticated? метод, тогда как он принимает только один.

Кроме того, это не имеет ничего общего с вашими тестами. Кажется, синтаксическая ошибка.

Другие вопросы по тегам