Simple and easy to add settings, preferences and so on to any model. See an example.
Sponsored By Rails Designer
bundle add rails_vault
rails generate rails_vault:install
rails db:migrate
Generate a vault:
rails generate rails_vault:add MODEL::VAULT [field:type field:type]
Example:
rails generate rails_vault:add User::Preferences \
time_zone:string \
datetime_format:string \
hotkeys_disabled:boolean
This will:
- Create a vault class at app/models/users/preferences.rb
- Add
vault :preferences
to your User model
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
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
Note: currently rails_vault is only tested against PostgreSQL, but PRs for improvements to other databases are appreciated.
This project uses Standard for formatting Ruby code. Please make sure to run be standardrb
before submitting pull requests. Run tests via rails test
.
rails_vault is released under the MIT License.