0.0
No commit activity in last 3 years
No release in over 3 years
Gem that provides flagging functionality for active record objects, just add can_be_flagged to your models.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 3.1.0
 Project Readme

Can Be Flagged¶ ↑

Allows for flags to be added to multiple and different models.

Resources¶ ↑

Install

  • To install as a gem (recommended):

** gem install can_be_flagged or ** Just add “gem ‘can_be_flagged’” to your Gemfile and “bundle install”

Generate your flag model:

** Rails 3: rails g flags

Then migrate your database:

** rake db:migrate

Usage¶ ↑

* Mark your ActiveRecord model can_be_flagged.

class Post < ActiveRecord::Base
	can_be_flagged
end

* Add a flag to a model instance

flaggable = Post.create(:text => "Don't be offended by this.")
flaggable.flags.create(:comment => "I am offended by that!")

* I like to add a counter cache column to my flaggable types:

add_column :posts, :flags_count, :integer

class Flag < ActiveRecord::Base
  belongs_to :flaggable, :polymorphic=>true, :counter_cache=>true
end

* You can have different types of flags

class Article
  can_be_flagged :offensive, :spam
end

* This gives you methods like this:
@article.offensive_flags.create(:comment => "gross!")
@article.spam_flags.create(:comment => "Don't sell your pharmaceuticals on this site!")
Aricle.find_spam_flags_for(@article)

* You can also add a callback

class Article
  can_be_flagged :after_add => :flagged

  def flagged
    # send an email
    # maybe delete this article if there are too many flags
  end

end

* In fact you can pass any options that are accepted by has_many:

class Article
  can_be_flagged :dependent=>:nullify
end

Credits¶ ↑

Juxie - The code for this plugin is heavily influenced by Acts As Commentable.

Bacon Bear? - Frankenstien’d some features from acts_as_flaggable

Contributors¶ ↑

Dan Hixon

License¶ ↑

Flag This is Copyright © 2010-2011 Dan Hixon. It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.