【やりたいこと】
railsのactionに制限をもたせたいのですが、やり方はわかりますでしょうか。
【やってみたこと】
commentモデルの中に
def add_like @post = Post.find(params[:post_id]) @comment = @post.comments.find(params[:id]) @comment.increment!(:Evaluation) redirect_to post_path(@post) end
上記のようなadd_likeというactionがあります。
こちらを1comment毎 1:user 1回のみに制限したいです。
現在userモデルで、下記のように行なっていますが、書き方が間違えているようです。
authenticates_with_sorcery! has_many :posts, dependent: :destroy has_many :comments, dependent: :destroy has_many :likes, dependent: :destroy has_many :comment_Evaluation_posts, through: :comment.Evaluation, source: :comment def already_liked?(comment) self.comments.Evaluations.exists?(id: comment.id) end
class Comment < ApplicationRecord belongs_to :post belongs_to :user validates :body, presence: true has_many :likes has_many :liked_users, through: :likes, source: :user validates_uniqueness_of :Evaluation, scope: :user_id end
class Post < ApplicationRecord belongs_to :user has_many :comments has_many :likes has_many :liked_users, through: :likes, source: :user validates :user, presence: true validates :content, presence: true #validates :image, presence: true serialize :image, Array mount_uploaders :image, ImageUploader scope :get_by_title, ->(title) { where("title like ?", "%#{title}%") } scope :get_by_genre, ->(genre) { where("genre like ?", "%#{genre}%") } end
参考サイト:https://qiita.com/nojinoji/items/2c66499848d882c31ffa
なお上記参考サイトはlikeというモデルを作成していますが、私はcommentモデルにEvaluationというカラムを作成していいねを行なっています。
(各commentにいいねを紐付けるためです)
お忙しいところすみませんが、アドバイスのほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/21 06:45
2020/03/21 06:48
2020/03/21 06:50
2020/03/21 07:10
2020/03/21 11:19
2020/03/21 11:21
2020/03/21 22:21