No commit activity in last 3 years
No release in over 3 years
Getters, setters, and scopes for Joel Moss's bitmask_attributes gem
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

BitmaskAttributesHelpers

Quick and simple helpers for Joel Moss' bitmask_attributes gem. These helpers include frequently used checkers, setters, getters, and scopes pertaining to the bitmasks.

Installation

The best way to install is with RubyGems:

$ [sudo] gem install bitmask_attributes_helpers

Or better still, just add it to your Gemfile:

gem 'bitmask_attributes_helpers'

Examples/Usage

There are four class methods we use to install the requisite helpers: bitmask_presence_methods, bitmask_scopes, bitmask_virtual_attributes, and bitmask_helpers. Each takes the name of the bitmask as an argument.

  class Model < ActiveRecord::Base
    bitmask :colors, as: [:red, :blue, :green]

    bitmask_presence_methods :colors
    # Enables value checkers, i.e.
    # model.red? => true if model has the red bitmask attribute set

    bitmask_scopes :colors
    # Enables scopes to search Model by bitmask values, i.e.
    # Model.red => all models which have the red bit set to true
    # Model.not_red => all models which have the red bit set to false

    bitmask_virtual_attributes :colors
    # Creates a virtual attribute on the model for each value of the bitmask,
      i.e.
    # model.red = true => sets the red bitmask to true
    # model.red => true, as we've sets the bitmask to true

    bitmask_helpers :colors
    # This is a macro to enable all of the above for a specific bitmask
  ...

Contributing

  1. Fork it.
  2. Create a branch (git checkout -b new-feature)
  3. Make your changes
  4. Run the tests (bundle install then bundle exec rake)
  5. Commit your changes (git commit -am "Created new feature")
  6. Push to the branch (git push origin new-feature)
  7. Create a pull request from your branch.
  8. Promote it. Get others to drop in and +1 it.

Credits

Joel Moss deserves all the credit for his wonderful bitmask_attributes gem

Copyright

Copyright (c) 2013 Ryan Chan