Un modelo ejemplo
class Iniciativa < ActiveRecord::Base
has_paper_trail
attr_reader :diputado_tokens, :comision_tokens, :partido_tokens
default_scope order("iniciativas.clave_int desc")
validates :clave, presence: true, uniqueness: true, on: :create
has_and_belongs_to_many :diputados
has_and_belongs_to_many :comisiones
has_and_belongs_to_many :partidos
belongs_to :dictamen
belongs_to :variable
has_many :archivos, as: :clase
accepts_nested_attributes_for :archivos, allow_destroy: true
after_create :ligar_a_legislatura_y_clave_to_int, :generar_clave
def ligar_a_legislatura_y_clave_to_int
self.variable_id = Variable.legislatura_actual.id
self.clave_int = self.clave.to_i
self.save!
end
def generar_clave
numeros_romanos = Variable.legislatura_actual.numeros_romanos
aidi = self.id.to_s
if aidi.length == 1
zero = "I000"
elsif aidi.length == 2
zero = "I00"
elsif aidi.length == 3
zero = "I0"
else
zero = "I"
end
self.clave = numeros_romanos + zero + aidi
self.save!
end
def tipo_de_status
if status == 1
"Tramite"
else
"Concluido"
end
end
def diputado_tokens=(ids)
self.diputado_ids = ids.split(",")
end
def comision_tokens=(ids)
self.comision_ids = ids.split(",")
end
def partido_tokens=(ids)
self.partido_ids = ids.split(",")
end
def to_param
"#{id}-#{clave}"
end
include PgSearch
pg_search_scope :search, against: [:descripcion, :clave],
using: {tsearch: {dictionary: "spanish"}},
ignoring: :accents
def self.text_search(query)
if query.present?
search(query)
else
scoped
end
end
end