Module: PreferenceAccess

Included in:
Spree::Config
Defined in:
lib/preference_access.rb

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/preference_access.rb', line 3

def self.included(base)
  class << base
    def get(key = nil)          
      key = key.to_s if key.is_a?(Symbol)
      return nil unless config = self.instance
      # preferences will be cached under the name of the class including this module (ex. Spree::Config)
      prefs = Rails.cache.fetch(self.to_s) { config.preferences }
      return prefs if key.nil?
      prefs[key]
    end

    # Set the preferences as specified in a hash (like params[:preferences] from a post request)
    def set(preferences={})
      config = self.instance
      preferences.each do |key, value|
        config.set_preference(key, value)
      end
      config.save
      Rails.cache.delete(self.to_s) { config.preferences }
    end

    alias_method :[], :get
  end
end