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.