Skip to content

Rails-Designer/rails_vault

Repository files navigation

rails_vault

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

Sponsored By Rails Designer

Rails Designer

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]

Use a built-in template:

rails generate vault User::Preferences --template=preferences

Available templates:

Template Description
preferences Timezone, locale, date/time format, UI density, hotkeys
notification_settings Email/push/SMS toggles, frequency, quiet hours
feature_flags Boolean flags for A/B testing and beta features
email_sequence State tracking for drip/welcome email sequences

Example (manual fields):

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 < Vault
  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"]

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.

About

Simple and easy to add settings, preferences and so on to any ActiveRecord model

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors