Hola,
He visto que rails no valida tal como yo esperarÃa. Por ejemplo, si
tengo los modelos Antenna, Area y Position, donde las posiciones se
agrupan en áreas, las antenas se encuentran en una área y cubren
determinadas posiciones. En modelo de las antenas quiero validar que
sólo las antenas instaladas en alguna área tengan asociadas posiciones,
es decir:
class Antenna < ActiveRecord::Base
belongs_to :area
has_and_belongs_to_many :positions
def validate
if area.nil? and positions.size > 0
errors.add(:positions, “The antenna must to…”)
end
end
end
Sin embargo lo que he obtenido es que si asocio una antena sin área con
una posición, a pesar de que se detecta el error, se guarda la
asociación. En efecto:
p = Position.find(68)
p.antennas = []
=> []a = Antenna.find(:first, :conditions => “area_id is null”)
a.positions << p
a.save
=> falsep = Position.find(68)
p.antennas.size
=> 1p.antennas[0].id
=> 13a.id
=> 13
¿Hay alguna forma cómoda de hacer validaciones que impidan que se
guarden dichas asociaciones?
Saludos,
Daniel.