Pending post feature

It sounds to me like you could turn this into a group with automatic entry, and it would be pretty similar to what you had before.

Here’s my mediocre design:

Category: Reviews
Security:
  staff      can create/reply/see
  reviewers  can create/reply/see
  everyone   can reply/see
def after_create_post(post):
   u = post.user
   return if in_reviewers_group?(u)
   return if post.category != reviews_category

   count = count_review_posts(u)
   if count >= 3
      Jobs.enqueue_in(18.hours, :promote_to_reviewer, {user: u})
   end
end

The code is just a rough overview of what you would need to do.

The “promote to reviewer” job would check to make sure that this third post didn’t have some kind of negative response, then give the user the “reviewer” group, which would allow them to create topics.