前提・実現したいこと
rails-tutorial11章をheroku 環境で動かしたい
発生している問題・エラーメッセージ
デプロイした後に、signup および logoutで以下画面となります。
We're sorry, but something went wrong.
If you are the application owner check the logs for more information.
試したこと
デプロイ前の環境で確認したところ、signup および logoutで以下エラーコードが確認出来ました。
NoMethodError in SessionsController#destroy
private method `forget' called for #User:0x00007f8a62bd4ba8
Rails.root: /home/ec2-user/environment/sample_app
Application Trace | Framework Trace | Full Trace
app/helpers/sessions_helper.rb:60:in forget' app/helpers/sessions_helper.rb:66:in
log_out'
app/controllers/sessions_controller.rb:27:in `destroy'
ここにより詳細な情報を記載してください。
ーーーsessions-helperのコードーーー
module SessionsHelper
渡されたユーザーでログインする
def log_in(user)
session[:user_id] = user.id
end
ユーザーのセッションを永続的にする
def remember(user)
user.remember
cookies.permanent.signed[:user_id] = user.id
cookies.permanent[:remember_token] = user.remember_token
end
# 渡されたユーザーがログイン済みユーザーであればtrueを返す
def current_user?(user)
user == current_user
end
現在ログイン中のユーザーを返す (いる場合)
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(:remember, cookies[:remember_token])
log_in user
@current_user = user
end
end
end
現在ログイン中のユーザーを返す (いる場合)
def edit
user = User.find_by(email: params[:email])
if user && !user.activated? && user.authenticated?(:activation, params[:id])
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
def logged_in?
!current_user.nil?
end
def forget(user)
user.forget
cookies.delete(:user_id)
cookies.delete(:remember_token)
end
def log_out
forget(current_user)
session.delete(:user_id)
@current_user = nil
end
def redirect_back_or(default)
redirect_to(session[:forwarding_url] || default)
session.delete(:forwarding_url)
end
アクセスしようとしたURLを覚えておく
def store_location
session[:forwarding_url] = request.original_url if request.get?
end
ーーーsessions-controllerのコードーーー
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
if user.activated?
log_in user
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
redirect_back_or user
else
message = "Account not activated. "
message += "Check your email for the activation link."
flash[:warning] = message
redirect_to root_url
end
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
end
def destroy
log_out if logged_in?
redirect_to root_url
end
end
もし、わかれば教えてください。また、どのような情報を提示すればいいかも教えて頂ければ幸いです。
heroku logs
.* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 5], ["LIMIT", 1]]
2018-08-25T03:18:07.851555+00:00 app[web.1]: F, [2018-08-25T03:18:07.851453 #6] FATAL -- : [9adef9d0-e4df-4b58-ab7e-79dc1c3df767]
2018-08-25T03:18:07.851887+00:00 app[web.1]: F, [2018-08-25T03:18:07.851795 #6] FATAL -- : [9adef9d0-e4df-4b58-ab7e-79dc1c3df767] NoMethodError (private method forget' called for #<User:0x00007fd5451e0038>): 2018-08-25T03:18:07.851966+00:00 app[web.1]: F, [2018-08-25T03:18:07.851909 #6] FATAL -- : [9adef9d0-e4df-4b58-ab7e-79dc1c3df767] 2018-08-25T03:18:07.852095+00:00 app[web.1]: F, [2018-08-25T03:18:07.851995 #6] FATAL -- : [9adef9d0-e4df-4b58-ab7e-79dc1c3df767] app/helpers/sessions_helper.rb:61:in
forget'
2018-08-25T03:18:19.541909+00:00 app[web.1]: F, [2018-08-25T03:18:19.541828 #6] FATAL -- : [3ad6f206-dbbe-4669-b877-db3d42308cf0]
2018-08-25T03:18:19.542301+00:00 app[web.1]: F, [2018-08-25T03:18:19.542210 #6] FATAL -- : [3ad6f206-dbbe-4669-b877-db3d42308cf0] NoMethodError (private method forget' called for #<User:0x00007fd5451860d8>): 2018-08-25T03:18:19.542413+00:00 app[web.1]: F, [2018-08-25T03:18:19.542341 #6] FATAL -- : [3ad6f206-dbbe-4669-b877-db3d42308cf0] 2018-08-25T03:18:19.542562+00:00 app[web.1]: F, [2018-08-25T03:18:19.542451 #6] FATAL -- : [3ad6f206-dbbe-4669-b877-db3d42308cf0] app/helpers/sessions_helper.rb:61:in
forget'
.* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 5], ["LIMIT", 1]]
2018-08-25T03:18:07.851555+00:00 app[web.1]: F, [2018-08-25T03:18:07.851453 #6] FATAL -- : [9adef9d0-e4df-4b58-ab7e-79dc1c3df767]
2018-08-25T03:18:07.851887+00:00 app[web.1]: F, [2018-08-25T03:18:07.851795 #6] FATAL -- : [9adef9d0-e4df-4b58-ab7e-79dc1c3df767] NoMethodError (private method forget' called for #<User:0x00007fd5451e0038>): 2018-08-25T03:18:07.851966+00:00 app[web.1]: F, [2018-08-25T03:18:07.851909 #6] FATAL -- : [9adef9d0-e4df-4b58-ab7e-79dc1c3df767] 2018-08-25T03:18:07.852095+00:00 app[web.1]: F, [2018-08-25T03:18:07.851995 #6] FATAL -- : [9adef9d0-e4df-4b58-ab7e-79dc1c3df767] app/helpers/sessions_helper.rb:61:in
forget'
2018-08-25T03:18:19.541909+00:00 app[web.1]: F, [2018-08-25T03:18:19.541828 #6] FATAL -- : [3ad6f206-dbbe-4669-b877-db3d42308cf0]
2018-08-25T03:18:19.542301+00:00 app[web.1]: F, [2018-08-25T03:18:19.542210 #6] FATAL -- : [3ad6f206-dbbe-4669-b877-db3d42308cf0] NoMethodError (private method forget' called for #<User:0x00007fd5451860d8>): 2018-08-25T03:18:19.542413+00:00 app[web.1]: F, [2018-08-25T03:18:19.542341 #6] FATAL -- : [3ad6f206-dbbe-4669-b877-db3d42308cf0] 2018-08-25T03:18:19.542562+00:00 app[web.1]: F, [2018-08-25T03:18:19.542451 #6] FATAL -- : [3ad6f206-dbbe-4669-b877-db3d42308cf0] app/helpers/sessions_helper.rb:61:in
forget'
あなたの回答
tips
プレビュー