class AccountActivationsController < ApplicationController def edit user = User.find_by(email: params[:email]) if user && !user.activated? && user.authenticated?(:activation, params[:id]) user.activate user.update_attribute(:activated_at, Time.zone.now) log_in user flash[:success] = "へようこそ" redirect_to user else flash[:danger] = "アクティベーションに失敗しました" redirect_to root_url end end end
↑でauthenticated? に渡されている 引数:activation が
model/user.rb def authenticated?(attribute, token) digest = send("#{attribute}_digest") return false if digest.nil? BCrypt::Password.new(digest).is_password?(token) end
↑のコードに反映されず、
エラーコード Failure/Error: digest = send("#{attribute}_digest") NoMethodError: undefined method ` _digest' for #<User:0x00007fea1e010fa8> # ./app/models/user.rb:32:in `authenticated?' # ./spec/models/user_spec.rb:134:in `block (4 levels) in <main>'
となってしまいます。
"#{attribute}_digest"のattribute部分が正しく読み取られていないのだと思いますが、原因が分かりません。
どなたか解決方法が分かる方はいらっしゃいますか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 07:37
2019/12/14 07:46
2019/12/14 08:21