前提・実現したいこと
現在Railsチュートリアルの9.3.2で詰まっています。
assert_equalの実行前後でSession[:user_id]が作成されているようなのですが、まったく理由がわからないです。
完全に自分の力では詰まってしまったのでどなたかご教授いただけると幸いです。
該当のソースコード
Ruby
1test 'current user returns right user when sessions is nil' do 2 assert_not session[:user_id].nil? 3end
をrails testするとredになります。
一方で
Ruby
1test 'current user returns right user when sessions is nil' do 2 assert_equal @user, current_user 3 assert_not session[:user_id].nil? 4end
をrails testするとgreenとなりパスします。
assrt_equalの実行前後で下のテスト結果が変わる(session[:user_id]がnilでなくなる)のはなぜなのでしょうか?
(補足)
Current_userというメゾットは下のようになっていて
このテストではelsif→ifの部分を通っています。
このif以下のlog_inメゾットは下のようになっていて、session[:user_id]が生成されているようです。
Ruby
1def current_user 2 if (user_id = session[:user_id]) 3 @current_user ||= User.find_by(id: user_id) 4 elsif (user_id = cookies.signed[:user_id]) 5 user = User.find_by(id: user_id) 6 if user && user.authenticated?(cookies[:remember_token]) 7 log_in user 8 @current_user = user 9 end 10 end 11 end
Ruby
1def log_in(user) 2 session[:user_id] = user.id 3 end
補足情報(FW/ツールのバージョンなど)
AWSのCloud9を使っています。
あなたの回答
tips
プレビュー