Module: Spreeference::Preferable

Extended by:
ActiveSupport::Concern
Included in:
ApplicationRecord, Configuration
Defined in:
lib/spreeference/preferable.rb

Instance Method Summary collapse

Instance Method Details

#clear_preferencesObject



51
52
53
# File 'lib/spreeference/preferable.rb', line 51

def clear_preferences
  preferences.keys.each {|pref| preferences.delete pref}
end

#default_preferencesObject



43
44
45
46
47
48
49
# File 'lib/spreeference/preferable.rb', line 43

def default_preferences
  Hash[
    defined_preferences.map do |preference|
      [preference, preference_default(preference)]
    end
  ]
end

#defined_preferencesObject



37
38
39
40
41
# File 'lib/spreeference/preferable.rb', line 37

def defined_preferences
  methods.grep(/\Apreferred_.*=\Z/).map do |pref_method|
    pref_method.to_s.gsub(/\Apreferred_|=\Z/, '').to_sym
  end
end

#get_preference(name) ⇒ Object



9
10
11
12
# File 'lib/spreeference/preferable.rb', line 9

def get_preference(name)
  has_preference! name
  send self.class.preference_getter_method(name)
end

#has_preference!(name) ⇒ Object



29
30
31
# File 'lib/spreeference/preferable.rb', line 29

def has_preference!(name)
  raise NoMethodError.new "#{name} preference not defined" unless has_preference? name
end

#has_preference?(name) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/spreeference/preferable.rb', line 33

def has_preference?(name)
  respond_to? self.class.preference_getter_method(name)
end

#preference_default(name) ⇒ Object



24
25
26
27
# File 'lib/spreeference/preferable.rb', line 24

def preference_default(name)
  has_preference! name
  send self.class.preference_default_getter_method(name)
end

#preference_type(name) ⇒ Object



19
20
21
22
# File 'lib/spreeference/preferable.rb', line 19

def preference_type(name)
  has_preference! name
  send self.class.preference_type_getter_method(name)
end

#set_preference(name, value) ⇒ Object



14
15
16
17
# File 'lib/spreeference/preferable.rb', line 14

def set_preference(name, value)
  has_preference! name
  send self.class.preference_setter_method(name), value
end