Rails Bling

Yet Another Paradigm by Peter Boling

What is it? See the what is it post.
Why should you use it? No migrations needed for new boolean attributes Avoids ALTER TABLE when adding a new boolean field to a model, which can be important for very large tables Only the one integer column needs to be indexed The index is actually meaningful, unlike a boolean column index Bitwise operations are fast, indexes are even faster, and you can use either one Adds scopes to easily access collections of records with specific fields Chained scopes to combine sql for different bit fields for maximum performance Provides condition builder methods for each bit field so you can construct your own custom SQL with the correct bit field values for the list.

Bit Fields for Active Record
What is a bit field? https://en.wikipedia.org/wiki/Bit_field
What is a bitwise operation? https://en.wikipedia.org/wiki/Bitwise_operation
flag_shih_tzu supports both :bit_operator and :in_list query modes, but only :in_list can will utilize a database index.
What does it look like? class Lead < ActiveRecord::Base include FlagShihTzu has_flags 1 => :warm_up_email_sent, 2 => :follow_up_call_made, 3 => :final_email_sent, 4 => :appointment_scheduled, 5 => :not_interested, # You can specify use any integer column to use for flags!