LoginSignup
3
0

More than 3 years have passed since last update.

【Rails6】同じユーザーが1投稿に対して、無限にレビューを出来てしまう不具合を解消

Last updated at Posted at 2021-02-25

概要

同じユーザーが、1つの投稿に対してのレビュー(評価)を永遠出来続けてしまう不具合を解消した方法について、紹介します。
→1投稿に対して1レビューしか出来ない状態にする。

image.png

結論

reviewモデルに以下のような、uniquness_ofのバリデーションを追加することで解決します。

app/models/review.rb

class Review < ApplicationRecord
  belongs_to :user
  belongs_to :definition

  validates :score, presence: true
  validates_uniqueness_of :definition_id, scope: :user_id # ←追加

end

レビュー無限解消.gif

バージョン

rubyのバージョン ruby-2.6.5
Railsのバージョン Rails:6.0.0

補足

validates_uniqueness_of :definition_id, scope: :user_id

validates_uniqueness_ofは唯一性を定めるためのバリデーションです。
scopeは範囲を定めます。

なので今回は、definition_idとuser_idの組み合わせが1通りしかないということになります。

この記述があるかぎり一意性が担保されるということです。

記事紹介

似たようなエラーを、いいね機能でも起こし、その解消例を以下に載せています。
よろしければご参考ください。
https://qiita.com/narimiya/items/c4480b17c07f7e1bbc61

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0