igmarin
2/7/2013 - 10:06 PM

Un modelo ejemplo

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