rails错误,错误的参数数量为2?

时间:2016-11-26 08:43:47

标签: ruby-on-rails ruby ruby-on-rails-5 railstutorial.org

我正在跟随Michael Hartl的轨道教程。如果需要,我按照建议跳过了一章,rails testAccountsActivationsController PasswordResetsController的用户模型出现相同的错误,错误的争论数量(2为1)。

我花了一点时间试图看看我哪里出错了,但我想我会问一个局外人的观点。我在用户模型def authenticated?中的相同操作中收到错误,来自各自控制器中的valid_useredit操作。

可能是什么问题?

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 个答案:

答案 0 :(得分:0)

您将两个参数传递给User#authenticated?方法,而它只接受一个。

此外,它与您的测试无关。这似乎是语法错误。

答案 1 :(得分:0)

您无需通过params[:id]只需通过:reset。我认为这对您有用。