Can Flag

Strongly inspired by acts_as_flaggable. Intended to allow your users to flag content as inappropriate, and set up some ways for you to deal with the content.

Resources

Install

  1. Download the tarball from github, or, clone the repository and symlink it into your application. Yes, I’m serious.

  2. $ script/generate can_flag flags

    This will create the following files:

    app/controllers/flags_controller.rb
    spec/helpers/flags_controller_spec.rb
    app/helpers/flags_helper
    db/migrate/flags_migration.rb
    
  3. Modify any content model with

    class Article < ActiveRecord::Base

    can_be_flagged
    

    end

    You can also add a callback

    class Article

    can_be_flagged
    def after_flagged
      # send an email
      # delete this post
      # suspend the owner of the post if the flags.size > 3
      # suspend the owner of the post if their total flags count > 5
    end
    

    end

  4. Modify your user model with

    class User < ActiveRecord::Base

    can_flag
    

    end

  5. Usage

    article = Article.find(4) current_user.flags.create :flaggable => article

* When a flag is added via add_flag, flagged(flag, flag_count) is called
  on the flaggable model.  This allows the model to perform certain
  operations if the number of flags reaches a certain point.  For example,
  you may want to mark a Post as deleted if a Post receives too many "spam"
  flags

* Each flag reference flaggable object

model = Model.find(1)
model.flags.get(0).commtable == model