いつもお世話になります。
現在RailsでSNSのようなものを作っており、いわゆる「いいね機能」を実装しようと考えています。以下のような3つのテーブルを用意しており「いいねボタン」が押されると「Likeテーブル」の「user_id:」に「Userテーブル」の「id:」を、「Likeテーブル」の「tweet_id:」に「Articleテーブル」の「id:」をそれぞれ書き込み、likes_countカラムにその投稿に関連したレコード(投稿に対する総いいね数)をLikeテーブルから数えて表示するようにしております。
この状態でArticleテーブルと同じカラムを持った「Article_other」というテーブルを新たに作り、そちらもLikeテーブルと関連付けて運用したいと考えているのですがうまくできません。
現在は以下のように書いているのですが、例えば「Articleテーブル」のid番号3にいいねをした場合に、「Article_otherテーブル」の方にもいいねがカウントされてしまいます。
「Articleテーブル」「Article_otherテーブル」2つを区別するようにLikeテーブルを管理する方法が分からず難航しております。
参考になるサイトでも構いませんのでご教示いただけると幸いです。
よろしくお願いいたします。
Ruby
1 2Articleテーブル 3id: 投稿ID 4poster_name: 投稿者名 5post_text: 投稿内容 6likes_count: 総いいね数 7 8Likeテーブル 9user_id: ユーザーID 10tweet_id: 投稿ID 11 12Userテーブル 13id: ユーザーID 14name: ユーザー名 15pass: パスワード 16 17class Article < ApplicationRecord 18 has_many :likes, dependent: :destroy, foreign_key: :tweet_id 19end 20 21class Like < ApplicationRecord 22 belongs_to :article, counter_cache: :likes_count, optional: true, foreign_key: :tweet_id 23 # ↓article_other用に追加 24 belongs_to :article_other, counter_cache: :likes_count, optional: true, foreign_key: :tweet_id 25end 26 27# ↓article_other用に追加 28class ArticleOther < ApplicationRecord 29 has_many :likes, dependent: :destroy, foreign_key: :tweet_id 30end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。