app/models/msip/basica.rb in msip-2.2.0.alfa3 vs app/models/msip/basica.rb in msip-2.2.0.beta1
- old
+ new
@@ -1,46 +1,52 @@
+# frozen_string_literal: true
module Msip
module Basica
extend ActiveSupport::Concern
included do
include Msip::Localizacion
include Msip::Modelo
- scope :habilitados, -> (campoord = "nombre") {
+ scope :habilitados, ->(campoord = "nombre") {
where(fechadeshabilitacion: nil).order(campoord.to_sym)
}
scope :filtro_permanente, -> () {
}
campofecha_localizado :fechacreacion
campofecha_localizado :fechadeshabilitacion
- validates :nombre, presence: true, allow_blank: false,
+ validates :nombre,
+ presence: true,
+ allow_blank: false,
length: { maximum: 500 }
validates :observaciones, length: { maximum: 5000 }
validates :fechacreacion, presence: true, allow_blank: false
# Las tablas basicas que tengan repetido deben definir la constante
# Nombresunicos=false
# Ver por ejemplo departamento
- validates_uniqueness_of :nombre, case_sensitive: false, if: Proc.new {
- |rb| !(defined? rb.class::Nombresunicos) || rb.class::Nombresunicos
+ validates :nombre, uniqueness: {
+ case_sensitive: false,
+ if: proc { |rb|
+ !(defined? rb.class::Nombresunicos) || rb.class::Nombresunicos
+ },
}
validate :fechacreacion_posible?
def fechacreacion_posible?
- if !fechacreacion || fechacreacion < Date.new(2000,1,1)
- errors.add(:fechacreacion, 'Debe ser reciente (posterior a 2000)')
+ if !fechacreacion || fechacreacion < Date.new(2000, 1, 1)
+ errors.add(:fechacreacion, "Debe ser reciente (posterior a 2000)")
end
end
validate :fechadeshabilitacion_posible?
def fechadeshabilitacion_posible?
- if (!fechadeshabilitacion.blank? && fechadeshabilitacion < fechacreacion)
- errors.add(:fechadeshabilitacion, 'Debe ser posterior a la de creación')
+ if fechadeshabilitacion.present? && fechadeshabilitacion < fechacreacion
+ errors.add(:fechadeshabilitacion, "Debe ser posterior a la de creación")
end
end
# Por defecto tablas básicas con datos en mayúsculas y sin espacios redundantes
# Para cambiarlo en una tabla básica definir por ejemplo:
@@ -55,105 +61,106 @@
# en otro caso retorna nil
def asociacion_combinada(atr)
if atr.is_a?(Hash) && atr.first[0].to_s.ends_with?("_ids")
na = atr.first[0].to_s.chomp("_ids")
a = self.class.reflect_on_all_associations
- r = a.select { |ua| ua.name.to_s == na }[0]
+ r = a.select { |ua| ua.name.to_s == na }[0]
return r
end
- return nil
+ nil
end
# Si atr es llave foranea retorna asociación a este modelo
# en otro caso retorna nil
def asociacion_llave_foranea(atr)
aso = self.class.reflect_on_all_associations
- bel = aso.select { |a| a.macro == :belongs_to }
+ bel = aso.select { |a| a.macro == :belongs_to }
fk = bel.map(&:foreign_key)
- if fk.include? atr
- r = aso.select { |a| a.foreign_key == atr }[0]
+ if fk.include?(atr)
+ r = aso.select { |a| a.foreign_key == atr }[0]
return r
end
- return nil
+ nil
end
# Si atr es atributo que es llave foranea retorna su clase
# si no retorna nil
def clase_llave_foranea(atr)
r = asociacion_llave_foranea(atr)
if r
return r.class_name.constantize
end
- return nil
+
+ nil
end
# Presentar nombre del registro en index y show
def presenta_nombre
- self['nombre']
+ self["nombre"]
end
# Presentar campo atr del registro en index y show genérico (no sobrec)
-# def presenta_gen(atr)
-# clf = clase_llave_foranea(atr)
-# if self.class.columns_hash && self.class.columns_hash[atr] &&
-# self.class.columns_hash[atr].type == :boolean
-# self[atr] ? "Si" : "No"
-# elsif asociacion_combinada(atr)
-# ac = asociacion_combinada(atr).name.to_s
-# e = self.send(ac)
-# e.inject("") { |memo, i|
-# (memo == "" ? "" : memo + "; ") + i.presenta_nombre
-# }
-# elsif clf
-# if (self[atr.to_s])
-# clf.find(self[atr.to_s]).presenta_nombre
-# else
-# ""
-# end
-# elsif self.respond_to?(atr) && self[atr.to_s].nil?
-# self.send(atr).to_s
-# else
-# self[atr.to_s].to_s
-# end
-# end
-#
-# # Presentar campo atr del registro en index y show para sobrecargar
-# def presenta(atr)
-# presenta_gen(atr)
-# end
+ # def presenta_gen(atr)
+ # clf = clase_llave_foranea(atr)
+ # if self.class.columns_hash && self.class.columns_hash[atr] &&
+ # self.class.columns_hash[atr].type == :boolean
+ # self[atr] ? "Si" : "No"
+ # elsif asociacion_combinada(atr)
+ # ac = asociacion_combinada(atr).name.to_s
+ # e = self.send(ac)
+ # e.inject("") { |memo, i|
+ # (memo == "" ? "" : memo + "; ") + i.presenta_nombre
+ # }
+ # elsif clf
+ # if (self[atr.to_s])
+ # clf.find(self[atr.to_s]).presenta_nombre
+ # else
+ # ""
+ # end
+ # elsif self.respond_to?(atr) && self[atr.to_s].nil?
+ # self.send(atr).to_s
+ # else
+ # self[atr.to_s].to_s
+ # end
+ # end
+ #
+ # # Presentar campo atr del registro en index y show para sobrecargar
+ # def presenta(atr)
+ # presenta_gen(atr)
+ # end
# Para búsquedas tipo autocompletacion en base de datos campos a observar
def self.busca_etiqueta_campos
- ['nombre']
+ ["nombre"]
end
# Para búsquedas tipo autocompletacion etiqueta que se retorna
def busca_etiqueta
- v = self.class.busca_etiqueta_campos.map { |c|
+ v = self.class.busca_etiqueta_campos.map do |c|
self[c]
- }
- return v.join(" ")
+ end
+ v.join(" ")
end
# Para búsquedas tipo autocompletacion valor que se retorna
def busca_valor
- self['id']
+ self["id"]
end
attr_accessor :habilitado
def habilitado
- fechadeshabilitacion.nil? ? 'Si' : 'No'
+ fechadeshabilitacion.nil? ? "Si" : "No"
end
- scope :filtro_habilitado, lambda {|o|
- if o.upcase.strip == 'SI'
+ scope :filtro_habilitado, lambda { |o|
+ if o.upcase.strip == "SI"
where("#{table_name}.fechadeshabilitacion IS NULL")
- elsif o.upcase.strip == 'NO'
+ elsif o.upcase.strip == "NO"
where.not("#{table_name}.fechadeshabilitacion IS NULL")
- #where.not(fechadeshabilitacion: nil)
- end
+ # where.not(fechadeshabilitacion: nil)
+ end
}
scope :filtro_nombre, lambda { |n|
where("unaccent(#{table_name}.nombre) ILIKE '%' || unaccent(?) || '%'", n)
}
@@ -161,19 +168,16 @@
scope :filtro_observaciones, lambda { |o|
where("unaccent(#{table_name}.observaciones) ILIKE '%' || unaccent(?) || '%'", o)
}
scope :filtro_fechacreacionini, lambda { |f|
- where('fechacreacion >= ?', f)
+ where("fechacreacion >= ?", f)
# El control de fecha HTML estándar retorna la fecha
# en formato yyyy-mm-dd siempre
}
scope :filtro_fechacreacionfin, lambda { |f|
- where('fechacreacion <= ?', f)
+ where("fechacreacion <= ?", f)
}
-
-
end
-
end
end