diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-01-13 02:42:22 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-01-13 02:42:22 +0100 |
commit | 2939e9898b1e0e7da6db802a00e594be4c85499d (patch) | |
tree | 17f57c3ca48df41c8460336bc225149030c45756 /app/models | |
parent | ca50ceeaf0e4195cf8a80da9fd226d97dbe14b7c (diff) |
Extend rails-settings-cached to merge db-saved hash values with defaults
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/setting.rb | 20 | ||||
-rw-r--r-- | app/models/user.rb | 2 |
2 files changed, 21 insertions, 1 deletions
diff --git a/app/models/setting.rb b/app/models/setting.rb index 0a429a62b..f3c65c054 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -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 diff --git a/app/models/user.rb b/app/models/user.rb index bf7d04d7c..71d3ee0b8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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 |