From 4160704b23d0b92cc090096f65580edc25aaa4bb Mon Sep 17 00:00:00 2001 From: DualFroz Date: Fri, 4 Sep 2026 18:23:56 +0200 Subject: [PATCH] feat(policies): add CommentPolicy, update? and LikePolicy --- examples/blog/app/policies/comment_policy.rb | 25 ++++++++++++++++++++ examples/blog/app/policies/like_policy.rb | 5 ++++ examples/blog/app/policies/post_policy.rb | 13 ++++++++++ 3 files changed, 43 insertions(+) create mode 100644 examples/blog/app/policies/comment_policy.rb create mode 100644 examples/blog/app/policies/like_policy.rb create mode 100644 examples/blog/app/policies/post_policy.rb diff --git a/examples/blog/app/policies/comment_policy.rb b/examples/blog/app/policies/comment_policy.rb new file mode 100644 index 0000000..a14111f --- /dev/null +++ b/examples/blog/app/policies/comment_policy.rb @@ -0,0 +1,25 @@ +class CommentPolicy < Prism::Policy + def update? + user && record.user_id == user.id + end + + def destroy? + update? + end + + def restore? + update? + end + + # Approving/rejecting is a moderation call, not an authorship one - it + # belongs to whoever owns the post the comment hangs off of, same as the + # nested-attributes moderation form on PostsController#update (which goes + # through PostPolicy#update? instead, since that request targets the post). + def approve? + user && record.post.user_id == user.id + end + + def reject? + approve? + end +end diff --git a/examples/blog/app/policies/like_policy.rb b/examples/blog/app/policies/like_policy.rb new file mode 100644 index 0000000..19fd8f3 --- /dev/null +++ b/examples/blog/app/policies/like_policy.rb @@ -0,0 +1,5 @@ +class LikePolicy < Prism::Policy + def destroy? + user && record.user_id == user.id + end +end diff --git a/examples/blog/app/policies/post_policy.rb b/examples/blog/app/policies/post_policy.rb new file mode 100644 index 0000000..8e3412f --- /dev/null +++ b/examples/blog/app/policies/post_policy.rb @@ -0,0 +1,13 @@ +class PostPolicy < Prism::Policy + def update? + user && record.user_id == user.id + end + + def destroy? + update? + end + + def restore? + update? + end +end