BitSettings is a plugin for ActiveRecord that transform a column of your model in a set of boolean settings.

activerecord, boolean, rails
gem install bit_settings -v 1.0.3



BitSettings is a plugin for ActiveRecord that transform a column of your model in a set of boolean settings. You can have up to 32 boolean values stored in a single database column.


Add this line to your application's Gemfile:

gem 'bit_settings'

And then execute:

$ bundle

Or install it yourself as:

$ gem install bit_settings


First of all add a unsigned int column for your boolean settings with rails g migration add_settings_to_users settings:integer and then edit like follow:

class AddSettingsToUsers < ActiveRecord::Migration
  def change
    add_column :users, :settings, 'INT UNSIGNED', null: false, default: 0

The max unsigned integer in 4 bytes is 2^32-1 = 4294967295 so with a column you can have max 32 settings. If you want that the default value of your settings is 1 (true) set the default value of the column to 2^32-1.

Then in your model:

class User extends ActiveRecord::Base
  include BitSettings
  add_settings :disable_notifications, :help_tour_shown

Now you can do:

user.disable_notifications? # => false
user.help_tour_shown? # => false
user.disable_notifications = true # => true

You can also use the scope with_settings which takes a hash as parameter like the example below:

# Get all users with the value of setting disable_notifications equal to true
# and the settings help_tour_shown equal to false.
users = User.with_settings(disable_notifications: true, help_tour_shown: false)

Available options are :column and :prefix:

class User extends ActiveRecord::Base
  add_settings :disable_notifications, :help_tour_shown, column: :my_settings, prefix: :setting
  • :column specify the name of the column to use (default is settings)
  • :prefix add a prefix to dynamic methods
user.setting_disable_notifications? # => false
users = User.with_settings(setting_disable_notifications: false)


After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to


Bug reports and pull requests are welcome on GitHub at


The gem is available as open source under the terms of the MIT License.