0.0
There's a lot of open issues
Rails Vault is a simple to use gem to add settings and preferences to ActiveRecord models. The settings are stored as JSON in a separate table.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

>= 7.2.2
 Project Readme

rails_vault

Simple and easy to add settings, preferences and so on to any model. See an example.

Sponsored By Rails Designer

Rails Designer

Want to make JavaScript your second-favorite language? 👉 JavaScript for Rails Developers

Installation

bundle add rails_vault
rails generate rails_vault:install
rails db:migrate

Usage

Generate a vault:

rails generate vault MODEL::VAULT_NAME [field:type field:type]

Example:

rails generate vault User::Preferences \
  time_zone:string \
  datetime_format:string \
  hotkeys_disabled:boolean

This will:

  1. Create a vault class at app/models/users/preferences.rb
  2. Add vault :preferences to your User model

Define vault attributes

class User::Preferences < RailsVault::Base
  vault_attribute :time_zone, :string, default: "UTC"
  vault_attribute :datetime_format, :string, default: "dd-mm-yyyy"
  vault_attribute :hotkeys_disabled, :boolean, default: false
end

Read and write values

user = User.first
user.create_preferences # => User::Preferences Create (6.3ms)  INSERT INTO "rails_vaults" …
user.preferences.time_zone # => "UTC"
user.preferences.hotkeys_disabled? # => false

user.preferences.update time_zone: "Amsterdam", hotkeys_disabled: true

user.preferences.time_zone # => "Amsterdam"
user.preferences.hotkeys_disabled? # => true

user.preferences.vault_attributes # => ["time_zone", "datetime_format", "hotkeys_disabled"]

Auto-create vaults

Vaults can be created automatically after the parent is created.

class User < ApplicationRecord
  vault :preferences, auto_create: true
  # for multiple vaults
  vaults :preferences, :settings, auto_create_all: true
end

Contributing

This project uses Standard for formatting Ruby code. Please make sure to run be standardrb before submitting pull requests. Run tests via rails test.

License

rails_vault is released under the MIT License.