Hola a toda la comunidad, saben tengo una pregunta sobre relaciones de
modelos y acudo a la comunidad para ver si alguien puede ayudarme.
Resulta que tengo 2 modelos, Cliente y Referencia, los cuales se
relacionan de la siguiente manera:
class Cliente < ActiveRecord::Base
has_many :referencia
end
class Referencia < ActiveRecord::Base
belongs_to :cliente
validates_presence_of :nombre_referencis, :message=>‘obligatorio’
end
Ambos modelos son creados y guardados en una funcion en el controlador,
lo estoy haciendo con una transaction que tiene la siguiente
estructura:
def index
Cliente.transaction do
if request.post?
@cliente = Cliente.new
@cliente.attributes = params[:clientes]
@referencia = Referencia.new
@referencia.attributes = params[:referencia]
@cliente.save!
@referencia.cliente_id = @cliente.id
@referencia.save!
flash[:notice] = "Guardado Exitosamente"
end
end
rescue #ActiveRecord::RecordNotFound
flash[:error] = “Errores Impiden Guardar el Registro”
end
end
El problema que me surge es al momento de guardar el registro, pues
segun lo que he leido, la manera de validar modelos asociados es con
validates_associated, por lo cual en el modelo de cliente, he colocado
lo siguiente:
class Cliente < ActiveRecord::Base
has_many :referencia
validates_associated :referencia, :if=>:tiene_referencias
validates_presence_of :nombre, :message=>’ es un campo obligatorio’
validates_presence_of :paterno, :message=>’ es un campo obligatorio’
validates_presence_of :materno, :message=>’ es un campo obligatorio’
def tiene_referencias
if referencia_personal == 1
return true
else
return false
end
end
end
Explicando un poco lo del codigo, puedo contarles que en el formulario
en el que se piden los datos al usuario, existe un checkbox llamado
referencia_personal, el cual llegara con un 1 si es activado o con un 0
si no se activa y esa es la condicion que yo estoy tratando de evaluar
para que solamente cuando se active, se valide el modelo referencia y
sea almacenado.
El problema es que aunque no marque el checkbox, el programa me dice que
el objeto no se pudo guardar porque existen campos vacios, es decir, se
estan realizando las validaciones del modelo asociado.
Si alguien sabe que estoy haciendo mal y me puede hechar la mano, se lo
agradecere mucho.