前提・実現したいこと
Ruby/Rails で三つ星評価機能を作成しています。そこでデータベースやサーバーの負荷の関係から、どのような構造が望ましいのか気になっています。一番望ましい設計はどのような感じでしょうか?
twitterやinstagramにあるハートのいいね機能は、カウンターキャッシュを利用するのが一般的だと思いますが、
三つ星評価の場合、3つの星をつけたとするとレコードを3つ追加することになります。
ユーザーが増えると、レコード数が増えすぎるので、カウンターキャッシュを利用せずに、
評価数を保持して、集計カラムを用意して、演算するやり方のほうが良いでしょうか?
皆さんの場合、どのような設計にするのかアドバイスをお願いいたします。
試したこと
現在は@rates_countに星の数(1~3)を代入して、その数分のレコードを追加しています。
Ruby
1 @rates_count.times do 2 rate = current_user.rates.new(boke_video_id: @boke_video.id) 3 rate.save 4 end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/01 15:53
2021/05/01 21:04
2021/05/02 02:57
2021/05/02 02:59
2021/05/02 10:26
2021/05/02 15:50 編集
2021/05/06 04:14