https://github.com/medihack/make_flaggable
[Unmaintained] User-centric flagging system for Rails 3 applications.
https://github.com/medihack/make_flaggable
Last synced: 2 months ago
JSON representation
[Unmaintained] User-centric flagging system for Rails 3 applications.
- Host: GitHub
- URL: https://github.com/medihack/make_flaggable
- Owner: medihack
- License: mit
- Created: 2011-06-16T13:53:53.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2018-05-17T11:42:48.000Z (about 7 years ago)
- Last Synced: 2025-03-30T13:11:10.038Z (2 months ago)
- Language: Ruby
- Homepage:
- Size: 25.4 KB
- Stars: 91
- Watchers: 5
- Forks: 81
- Open Issues: 13
-
Metadata Files:
- Readme: README.rdoc
- License: MIT-LICENSE
Awesome Lists containing this project
README
= MakeFlaggable
MakeFlaggable is an extension for building a user-centric flagging system for Rails 3 and 4 applications.
It currently supports ActiveRecord models.* This repository is unfortunately no longer maintained. If this library is still relevant and you want to maintain it, I am happy to hand this repository over.
== Installation
add MakeFlaggable to your Gemfile
gem 'make_flaggable'
afterwards execute
bundle install
generate the required migration file
rails generate make_flaggable
migrate the database
rake db:migrate
== Usage
# Specify a model that can be flagged.
class Article < ActiveRecord::Base
make_flaggable
end# Specify a model that can flag another model.
class User < ActiveRecord::Base
make_flagger
end# You can specify that a flagger can only flag a flaggable once.
class User < ActiveRecord::Base
make_flagger :flag_once => true
end# The user can now flag the flaggable.
# If the user already flagged the flaggable and :flag_once was set then an AlreadyFlaggedError is raised.
user.flag!(article, reason)# The method without bang(!) does not raise the AlreadyFlaggedError when the user flags the flaggable more than once.
# Instead it just returns false and ignores the flagging.
# If :flag_once was not set then this method behaves like flag! method.
user.flag(article, reason)# The user may unflag an already done flagging.
# If the user never flagged the flaggable then an NotFlaggedError is raised.
user.unflag!(article)# The method without bang(!) does not raise the NotFlaggedError, but just returns false if the user never flagged
# the flaggable.
user.unflag(article)# Get all flaggings of a flaggable.
article.flaggings
# Get the flagging with a specified flag.
article.flaggings.with_flag(:flag_name)# Get the flagger of the flagging.
flagging = article.flaggings.with_flag(:flag_name).first
user = flagging.flagger# Returns true if the flagger flagged the flaggable, false otherwise.
user.flagged?(article, :flag_name)# Get the reason of a flagging.
flagging = article.flaggings.first
flagging.reason# Get the flagger of the flagging.
flagging = article.flaggings.first
user = flagging.flagger# Returns true if the flagger flagged the flaggable, false otherwise.
user.flagged?(article)# Return true if the flaggable was flagged by the flagger, false otherwise.
article.flagged_by?(user)# Returns true if the article was flagged by any flagger at all, false otherwise.
article.flagged?# Flaggings can also be accessed by its flagger.
flagger.flaggings# In order to obtain all flaggers of a resource, the flaggers method can be invoked on the class
# Passing no argument would return flaggers that have flagged across any flaggable resource
User.flaggers
# An optional argument can be passed, restricting the detection to a particular resource
User.flaggers(Article)== Testing
MakeFlaggable uses RSpec for testing and has a rake task for executing the provided specs
rake spec
or simply
rake
Copyright © 2010-2011 Kai Schlamp (http://www.medihack.org), released under the MIT license