Extend rails-settings-cached to merge db-saved hash values with defaults
This commit is contained in:
parent
ca50ceeaf0
commit
2939e9898b
6 changed files with 44 additions and 70 deletions
|
@ -9,6 +9,26 @@ class Setting < RailsSettings::Base
|
|||
end
|
||||
|
||||
class << self
|
||||
|
||||
def [](key)
|
||||
return super(key) unless rails_initialized?
|
||||
|
||||
val = Rails.cache.fetch(cache_key(key, @object)) do
|
||||
db_val = object(key)
|
||||
|
||||
if db_val
|
||||
default_value = default_settings[key]
|
||||
|
||||
return default_value.with_indifferent_access.merge!(db_val.value) if default_value.is_a?(Hash)
|
||||
db_val.value
|
||||
else
|
||||
default_settings[key]
|
||||
end
|
||||
end
|
||||
|
||||
val
|
||||
end
|
||||
|
||||
def all_as_records
|
||||
vars = thing_scoped
|
||||
records = vars.map { |r| [r.var, r] }.to_h
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class User < ApplicationRecord
|
||||
include RailsSettings::Extend
|
||||
include Settings::Extend
|
||||
|
||||
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue