[ruby-it] Rails: Propagazione di Validation da figlio a padre

Carmine Moleti carmine.moleti a email.it
Mer 7 Feb 2007 07:38:49 CET


Salve a tutti,

Ho un paio di modelli siffatti:

class Client < ActiveRecord::Base
  validates_presence_of :cognome, :nome, :data_di_nascita,:badge
  has_one :badge

end

class Badge < ActiveRecord::Base
  belongs_to :client
  validates_presence_of :numero
  validates_numericality_of :numero, :only_integer => true
  validates_uniqueness_of :numero
  validates_presence_of :tipo

private

  def validate
    errors.add(:client_id,"Badge già assegnato") if (self.client_id !=
nil) and (Badge.find(:all, :conditions => "client_id =
#{self.client_id}").size > 1)
  end

end

Se dalla console di rails eseguo dei test cercando di assegnare lo
stesso badge a due client diversi,
all'esecuzione di save!, giustamente, mi viene ritornata un'eccezione.
La stessa cosa _non_ accade se faccio come segue:
c,d = Client.find(:all)
b1,b2 = Badge.find(:all)
c.badge = b1
d.badge = b1
c.save!
d.save!

Se analizzo b1.errors.size, osservo che è 1, mentre c.valid? e d.valid?
restituiscono "true".

L'errore sul badge non dovrebbe propragarsi anche al client che lo
contiene?
Oppure, è necessario aggiungere un controllo anche sul client?

Ringrazio in anticipo per il Vs aiuto.
Saluti

-- 
Posted via http://www.ruby-forum.com/.


Maggiori informazioni sulla lista Ml