diff --git a/app/models/edu_setting.rb b/app/models/edu_setting.rb index f4a89c09b..708aa625e 100644 --- a/app/models/edu_setting.rb +++ b/app/models/edu_setting.rb @@ -1,22 +1,23 @@ -# == Schema Information -# -# Table name: edu_settings -# -# id :integer not null, primary key -# name :string(255) -# value :string(255) -# created_at :datetime not null -# updated_at :datetime not null -# description :string(255) -# -# Indexes -# -# index_edu_settings_on_name (name) UNIQUE -# - +# == Schema Information +# +# Table name: edu_settings +# +# id :integer not null, primary key +# name :string(255) +# value :string(255) +# created_at :datetime not null +# updated_at :datetime not null +# description :string(255) +# +# Indexes +# +# index_edu_settings_on_name (name) UNIQUE +# + class EduSetting < ApplicationRecord - after_commit :expire_value_cache + after_commit :expire_value_cache, on: [:create, :update] + after_commit :clear_value_cache, on: :destroy scope :by_search, -> (keyword){ where("name LIKE :keyword OR value LIKE :keyword", keyword: "%#{strip_param(keyword)}%") unless strip_param(keyword).blank? } @@ -25,7 +26,11 @@ class EduSetting < ApplicationRecord end def self.get(key) - Rails.cache.fetch(value_cache_key(key), expires_in: 1.days) do + begin + Rails.cache.fetch(value_cache_key(key), expires_in: 1.days) do + find_by_name(key.to_s)&.value + end + rescue Exception => e find_by_name(key.to_s)&.value end end @@ -41,4 +46,8 @@ class EduSetting < ApplicationRecord def expire_value_cache Rails.cache.write(value_cache_key, value) end + + def clear_value_cache + Rails.cache.delete(value_cache_key) + end end