Sha256: 7268da5b6fef123b5f871da9a5ea9eac69a5c05c862f53ea3d98e6c35c4c61f5

Contents?: true

Size: 857 Bytes

Versions: 10

Compression:

Stored size: 857 Bytes

Contents

module Spree::PreferenceAccess

  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("configuration_#{config.id}".to_sym) { 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("configuration_#{config.id}".to_sym)
      end

      alias_method :[], :get
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
spree_core-0.40.4 lib/spree/preference_access.rb
spree_core-0.50.4 lib/spree/preference_access.rb
spree_core-0.50.3 lib/spree/preference_access.rb
spree_core-0.50.2 lib/spree/preference_access.rb
spree_core-0.50.1 lib/spree/preference_access.rb
spree_core-0.50.0 lib/spree/preference_access.rb
spree_core-0.40.3 lib/spree/preference_access.rb
spree_core-0.40.2 lib/spree/preference_access.rb
spree_core-0.40.1 lib/spree/preference_access.rb
spree_core-0.40.0 lib/spree/preference_access.rb