Ошибка рельсов, неверное количество аргументов 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?
метод, тогда как он принимает только один.
Кроме того, это не имеет ничего общего с вашими тестами. Кажется, синтаксическая ошибка.