* Introduce Settings::Base * Temporarily re-add gem * Update Settings::Base to use RequestStore * Add after_commit hook * Restructure code * Finish specs, rename field -> setting * Update comment * Undo unrelated change * Remove redundant get_default * Fix Doorkeeper issue * Update docs/backend/configuration.md Co-authored-by: Josh Puetz <josh@dev.to> * Clarify comment and documentation * Update vendored gems * Fix nil-handling bug in Settings::Base * Remove accidentaly changes from Gemfile.lock * Update vendored gems Co-authored-by: Josh Puetz <josh@dev.to>
42 lines
1.3 KiB
Text
42 lines
1.3 KiB
Text
Description:
|
|
Generates a settings model.
|
|
|
|
Examples:
|
|
* Generating a settings model (you don't need to specify the Settings::
|
|
namespace)
|
|
|
|
$ rails generate settings_model Notification
|
|
|
|
# db/migrate/<timestamp>_create_settings_notifications.rb
|
|
class CreateSettingsNotifications < ActiveRecord::Migration[6.0]
|
|
def self.up
|
|
create_table :settings_notifications do |t|
|
|
t.string :var, null: false
|
|
t.text :value, null: true
|
|
|
|
t.timestamps
|
|
end
|
|
|
|
add_index :settings_notifications, :var, unique: true
|
|
end
|
|
|
|
def self.down
|
|
drop_table :settings_notifications
|
|
end
|
|
end
|
|
|
|
# app/models/settings/notification.rb
|
|
module Settings
|
|
class Notification < RailsSettings::Base
|
|
self.table_name = :settings_notifications
|
|
|
|
# The configuration is cached, change this if you want to force update
|
|
# the cache, or call Setting::Notification.clear_cache
|
|
cache_prefix { "v1" }
|
|
|
|
# Define your settings
|
|
# setting :host, type: :string, default: "http://localhost:3000"
|
|
# setting :default_locale, default: "en", type: :string
|
|
end
|
|
end
|
|
|