Closed ryohakjae114 closed 2 months ago
rails g model Like user:references post:references
add_index :likes, %i[user_id post_id], unique: true
has_many :likes
belong_to :user belong_to :post
rails g controller posts/likes create destroy --skip-template-engine
resources :posts, shallow: true do resources :likes, end
def create like = current_user.likes.build(post: params[:post_id]) like.save! redirect_to post_url(like.post) end
def like?(post) likes.find_by(post_id: post.id).present? end
= link_to 'いいね', post_likes_url(post), method: :post
def destroy like = current_user.likes.find(id: params[:id]) like.destroy! redirect_to post_url(like.post) end
has_many :liked_users, through: :users
@users = Post.find(params[:post_id]).liked_users
[x] テスト作成
[x] いいねできること 10m rails g rspec:system likes
rails g rspec:system likes
[x] ユーザと記事を1つbeforeブロックで作成する
[x] 投稿一覧ページにアクセス
[x] 記事のいいねの数が0件なのを確認する
[x] 記事にいいねを押す click '♡'
click '♡'
[x] 記事のいいねの数が1件なのを確認する expect(page).to have_content('1件')
expect(page).to have_content('1件')
[x] 対象のユーザと記事のいいねモデルが1つ増えたことを確認する end.to change(post.liked_users.find_by(user:), :count).by(1)
end.to change(post.liked_users.find_by(user:), :count).by(1)
[x] いいねを解除できること 10m
[x] ユーザと投稿に関連したライクモデルを作成する
[x] 記事のいいねの数が1件なのを確認する
[x] 記事にいいねを押す
[x] 対象のユーザと記事のいいねモデルが1つ減ったことを確認する
[x] 投稿をいいねした人を一覧できること 10m
[x] "#{数字}件"をクリックする
[x] ユーザの名前が表示されていることを確認する
rails g model Like user:references post:references
rails g controller posts/likes create destroy --skip-template-engine
[x] テスト作成
[x] いいねできること 10m
rails g rspec:system likes
[x] ユーザと記事を1つbeforeブロックで作成する
[x] 投稿一覧ページにアクセス
[x] 記事のいいねの数が0件なのを確認する
[x] 記事にいいねを押す
click '♡'
[x] 記事のいいねの数が1件なのを確認する
expect(page).to have_content('1件')
[x] 対象のユーザと記事のいいねモデルが1つ増えたことを確認する
end.to change(post.liked_users.find_by(user:), :count).by(1)
[x] いいねを解除できること 10m
[x] ユーザと投稿に関連したライクモデルを作成する
[x] 投稿一覧ページにアクセス
[x] 記事のいいねの数が1件なのを確認する
[x] 記事にいいねを押す
[x] 記事のいいねの数が0件なのを確認する
[x] 対象のユーザと記事のいいねモデルが1つ減ったことを確認する
[x] 投稿をいいねした人を一覧できること 10m
[x] ユーザと投稿に関連したライクモデルを作成する
[x] 投稿一覧ページにアクセス
[x] "#{数字}件"をクリックする
[x] ユーザの名前が表示されていることを確認する