Class: ActiveRecord::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/ext/ActiveRecord/base.rb

Class Method Summary collapse

Class Method Details

.fecha_ddMyyyy(*fields) ⇒ Object

Define métodos para manejar campos de fecha en formato dd/M/yyyy.

Parameters:

  • fields (Array<Symbol>)

    Nombres de los campos de fecha.



30
31
32
33
34
35
36
37
38
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/ext/ActiveRecord/base.rb', line 30

def fecha_ddMyyyy(*fields)
  fields.each do |f|
    define_method("#{f}_ddMyyyy") do
      val = read_attribute(f)
      unless val
        return
      end

      val = val.to_s
      a = val[0, 4]
      m = val[5, 2]
      d = val[8, 2]
      meses = [
        "Ene",
        "Feb",
        "Mar",
        "Abr",
        "May",
        "Jun",
        "Jul",
        "Ago",
        "Sep",
        "Oct",
        "Nov",
        "Dic",
      ]
      "#{d}/#{meses[m.to_i - 1]}/#{a}"
    end
    define_method("#{f}_ddMyyyy=") do |e|
      val = e.to_s
      a = val[7, 4]
      nomm = val[3, 3]
      d = val[0, 2]
      meses = [
        "Ene",
        "Feb",
        "Mar",
        "Abr",
        "May",
        "Jun",
        "Jul",
        "Ago",
        "Sep",
        "Oct",
        "Nov",
        "Dic",
      ]
      m = 1
      nm = meses.index(nomm)
      if nm
        m = 1 + meses.index(nomm)
      end
      write_attribute(f, "#{a}-#{m}-#{d}")
    end
  end
end

.flotante_localizado(*fields) ⇒ Object

Define métodos para manejar campos flotantes localizados.

Parameters:

  • fields (Array<Symbol>)

    Nombres de los campos flotantes.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/ext/ActiveRecord/base.rb', line 8

def flotante_localizado(*fields)
  fields.each do |f|
    define_method("#{f}_localizado") do
      val = if attribute_method?(f)
        read_attribute(f)
      else
        send(f) # read_attribute(f)
      end
      val&.to_s&.a_decimal_localizado
    end
    define_method("#{f}_localizado=") do |e|
      if attribute_method?(f)
        write_attribute(f, e.to_s.a_decimal_nolocalizado)
      else
        send(f.to_s + "=", e.to_s.a_decimal_nolocalizado)
      end
    end
  end
end