Sha256: b4751c5fb3a92d8813bd333f66b83f134280cd4d47f9e0413dc472fb035ceb9d

Contents?: true

Size: 970 Bytes

Versions: 28

Compression:

Stored size: 970 Bytes

Contents

class Spree::Preference < ActiveRecord::Base
  serialize :value

  validates :key, presence: true
  validates :value_type, presence: true

  scope :valid, -> { where(Spree::Preference.arel_table[:key].not_eq(nil)).where(Spree::Preference.arel_table[:value_type].not_eq(nil)) }

  # The type conversions here should match
  # the ones in spree::preferences::preferrable#convert_preference_value
  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

  def raw_value
    self[:value]
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
spree_core-2.2.14 app/models/spree/preference.rb
spree_core-2.2.13 app/models/spree/preference.rb
spree_core-2.2.12 app/models/spree/preference.rb
spree_core-2.2.11 app/models/spree/preference.rb
spree_core-2.2.10 app/models/spree/preference.rb
spree_core-2.2.9 app/models/spree/preference.rb
spree_core-2.1.12 app/models/spree/preference.rb
spree_core-2.2.8 app/models/spree/preference.rb
spree_core-2.1.11 app/models/spree/preference.rb
spree_core-2.2.7 app/models/spree/preference.rb
spree_core-2.1.10 app/models/spree/preference.rb
spree_core-2.1.9 app/models/spree/preference.rb
spree_core-2.2.6 app/models/spree/preference.rb
spree_core-2.2.5 app/models/spree/preference.rb
spree_core-2.1.8 app/models/spree/preference.rb
spree_core-2.2.4 app/models/spree/preference.rb
spree_core-2.2.3 app/models/spree/preference.rb
spree_core-2.2.2 app/models/spree/preference.rb
spree_core-2.1.7 app/models/spree/preference.rb
spree_core-2.1.6 app/models/spree/preference.rb