Class: Spree::Preference

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/spree/preference.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.convert_old_value_types(preference) ⇒ Object

For the rc releases of 1.0, we stored the object class names, this converts to preferences definition types. This code should eventually be removed. it is called during the load_preferences of the Preferences::Store



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/models/spree/preference.rb', line 39

def self.convert_old_value_types(preference)
  classes =  [Symbol.to_s, Fixnum.to_s, Bignum.to_s,
              Float.to_s, TrueClass.to_s, FalseClass.to_s]
  return unless classes.map(&:downcase).include? preference.value_type.downcase

  case preference.value_type.downcase
  when "symbol"
    preference.value_type = 'string'
  when "fixnum"
    preference.value_type = 'integer'
  when "bignum"
    preference.value_type = 'integer'
    preference.value = preference.value.to_f.to_i
  when "float"
    preference.value_type = 'decimal'
  when "trueclass"
    preference.value_type = 'boolean'
    preference.value = "true"
  when "falseclass"
    preference.value_type = 'boolean'
    preference.value = "false"
  end

  preference.save
end

Instance Method Details

#raw_valueObject



32
33
34
# File 'app/models/spree/preference.rb', line 32

def raw_value
  self[:value]
end

#valueObject

The type conversions here should match the ones in spree::preferences::preferrable#convert_preference_value



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/models/spree/preference.rb', line 11

def value
  if self[:value_type].present?
    case self[:value_type].to_sym
    when :string, :text
      self[:value].to_s
    when :password
      self[:value].to_s
    when :decimal
      BigDecimal.new(self[:value].to_s).round(2, BigDecimal::ROUND_HALF_UP)
    when :integer
      self[:value].to_i
    when :boolean
      (self[:value].to_s =~ /^[t|1]/i) != nil
    else
      self[:value].is_a?(String) ? YAML.load(self[:value]) : self[:value]
    end
  else
    self[:value]
  end
end