|
- # == 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
-
- scope :by_search, -> (keyword){ where("name LIKE :keyword OR value LIKE :keyword", keyword: "%#{strip_param(keyword)}%") unless strip_param(keyword).blank? }
-
- def value_cache_key
- self.class.value_cache_key(name)
- end
-
- def self.get(key)
- Rails.cache.fetch(value_cache_key(key), expires_in: 1.days) do
- find_by_name(key.to_s)&.value
- end
- end
-
- def self.value_cache_key(name)
- raise ArgumentError if name.blank?
-
- "educoder/edu-settings/#{name.to_s}"
- end
-
- private
-
- def expire_value_cache
- Rails.cache.write(value_cache_key, value)
- end
- end
|