質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

689閲覧

rails tutorial 11.3.3rails test error

yachiyo

総合スコア3

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/05/21 08:46

編集2022/01/12 10:55

イメージ説明イメージ説明

画像のようなエラーになっていまします。
解決方法が全くわかりません。

#app/helpers/sessions_helper.rbのコードです。
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

記憶トークンcookieに対応するユーザーを返す
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

渡されたユーザーがカレントユーザーであればtrueを返す
def current_user?(user)
user && user == current_user
end

ユーザーがログインしていればtrue、その他ならfalseを返す
def logged_in?
!current_user.nil?
end

現在のユーザーをログアウトする
def log_out
session.delete(:user_id)
@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

記憶したURL (もしくはデフォルト値) にリダイレクト
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
end

app/controllers/users.controller.rbのコードです。

class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
before_action :correct_user, only: [:edit, :update]
before_action :admin_user, only: :destroy

def index
@users = User.paginate(page: params[:page])
end

def show
@user = User.find(params[:id])
end

def new
@user = User.new
end

def create
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
render 'new'
end
end

def edit
@user = User.find(params[:id])
end

def update
@user = User.find(params[:id])
if @user.update(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end

def destroy
User.find(params[:id]).destroy
flash[:success] = "User deleted"
redirect_to users_url
end

private

def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end beforeアクション ログイン済みユーザーかどうか確認 def logged_in_user unless logged_in? store_location flash[:danger] = "Please log in." redirect_to login_url end end 正しいユーザーかどうか確認 def correct_user @user = User.find(params[:id]) redirect_to(root_url) unless current_user?(@user) end 管理者かどうか確認 def admin_user redirect_to(root_url) unless current_user.admin? end

end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

UsersControllerにて正規ユーザーかを確認する仕組みが正しく動作していないようなのでご確認ください

投稿2021/05/21 11:14

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yachiyo

2021/05/23 22:02

回答ありがとうございます。 Userscontorller解答と同じようにコードを書き直してみましたが同じエラーになってしまいました。 どこのコードをどのように変えればいいかわかりますでしょうか? 自分では11章を最初からやり直す以外にわかりません。
asm

2021/05/24 00:35

既に回答したように、テストコードには問題ないようですので app/controllers/users_controller.rb app/helpers/sessions_helper.rb を確認する事になります。
yachiyo

2021/05/24 20:29 編集

app/controllers/users_controller.rb app/helpers/sessions_helper.rb のコードを追記しました。 間違っている箇所がどこだかわかりますか? すいません何度も同じようなことを聞いてしまって…。
asm

2021/05/25 00:03 編集

なるほど、コードに誤りはなさそうですね。 他に疑うのは、コードが正しく保存されているか、ですかね 画像のusers_controller_test.rbは編集中のようですし きちんと、保存されている場合は・・・地道にデバッグしていくしかないですね
yachiyo

2021/05/26 11:03

すいません。一応保存した後も同じくエラーになりました。 わかりました。長々と回答頂きありがとうございました。 色々と参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問