user
はdiaries
をhas_many
していますが、diary
を持っていないuser
に対して、rspec
でテストをかけると
以下のコードのuser.diaries.order(created_at: :desc)
でdiaries
がnil
になってしまい、created_at
でメソッドエラーが起きてしまうのですがこのメソッドでdiary
を持っていない、つまりnil
なユーザーでuser.cannot_post
をfalse
が帰るような組み方が知りたいです。お願いいたします。
if文(if diaries)
で試しに組んでみましたが、nil
エラーが起きました.
user.rb
ruby
1def cannot_post? 2 latest_diary = diaries.order(created_at: :desc).limit(1) 3 #現在時刻と最終投稿の時刻の差分が1日を経過していなかったらtrue 4 (Time.zone.now - latest_diary.first.created_at) < 1.day 5 end
- User インスタンスメソッド cannot_post? 1日以内に投稿していない場合 falseを返す
Failure/Error: (Time.zone.now - latest_diary.first.created_at) < 1.day NoMethodError: undefined method `created_at' for nil:NilClass
user_spec.rb
ruby
1describe 'cannot_post?' do 2 context '1日以内に投稿した場合' do 3 it 'trueを返す' do 4 create(:diary, user: user_a, created_at: Time.zone.now) 5 expect(user_a.cannot_post?).to be true 6 end 7 end 8 context '1日以内に投稿していない場合' do 9 let(:can_post_user) { create(:user) } 10 it 'falseを返す' do 11 expect(can_post_user.cannot_post?).to be false 12 end 13 end 14 end
回答1件
あなたの回答
tips
プレビュー