Sha256: 599de9c0b43d29618a9c6bb7e733830498e8fe1299f4801ca59bce0ccc77e24b

Contents?: true

Size: 1.59 KB

Versions: 21

Compression:

Stored size: 1.59 KB

Contents

module C80Estate
  class ItemProp < ActiveRecord::Base

    belongs_to :area
    # belongs_to :property
    belongs_to :prop_name

    before_save :before_save_format_value

    def self.all_uniq_values(prop_name_id)
      r = self.where(prop_name_id: prop_name_id)
          .map { |ip| ip.value.to_i }.uniq
      # Rails.logger.debug("<ItemProp.all_uniq_values> #{prop_name_id}: #{r}")
      r
    end

    private

    def self.capz
      [24, 36, 46]
    end

    def self.uppz
      [27, 37, 38]
    end

    def self.siz
      [23]
    end

    def before_save_format_value

      v = self.value
      uom = prop_name.uom

      # удаляем пробелы в начале и в конце строки
      v = v.strip! || v

      # числовые значения преобразуем в числа
      if uom.present? && uom.is_number

        v = v.gsub(' ', '')
        v = v.gsub(',', '.')
        v = v[/([0-9.]+)/]

        # нечисловые значения: либо capitalize, либо upcase, либо downcase
      else

        if prop_name_id.in?(ItemProp.capz)
          v = v.mb_chars.capitalize.to_s
        elsif prop_name_id.in?(ItemProp.uppz)
          v = v.mb_chars.upcase.to_s
        else
          v = v.mb_chars.downcase.to_s
        end

      end

      if prop_name_id.in?(ItemProp.siz)
        v = v.gsub(',', '.')
        sizes = v.scan(/([0-9,]+)/)
        oum = v.scan(/[мс]*м/)
        v = sizes.join(" x ")
        if oum.count > 0
          v += " #{oum[0]}"
        else
          v += ' мм'
        end
      end


      self.value = v

    end

  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
c80_estate-0.1.0.30 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.29 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.28 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.27 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.26 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.25 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.24 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.23 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.22 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.21 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.20 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.19 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.18 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.17 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.16 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.15 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.14 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.13 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.12 app/models/c80_estate/item_prop.rb
c80_estate-0.1.0.11 app/models/c80_estate/item_prop.rb