Foros del Web » Programando para Internet » Ruby »

Un padre un hijo

Estas en el tema de Un padre un hijo en el foro de Ruby en Foros del Web. Parece ser q existe una error en el mensaje origunal: tengo una tabla padre: empresa (:id) con una tabla hijo uno a uno llamada actividads ...
  #1 (permalink)  
Antiguo 09/11/2006, 02:16
 
Fecha de Ingreso: agosto-2006
Mensajes: 316
Antigüedad: 17 años, 8 meses
Puntos: 0
Un padre un hijo

Parece ser q existe una error en el mensaje origunal:

tengo una tabla padre: empresa (:id) con una tabla hijo uno a uno llamada actividads (empresa_id)

Código HTML:
empresa.rb
  has_one   :actividad

y

actividad.rb
  belongs_to  :empresa
con scaffold creo todo lo necesario para gestionar empresa.

AHORA LLEGAN LOS PROBLEMAS.
cuando quiero añadir al formulario de entrada de datos para empresa y segundo formulario.

creo las vistas para actividads, enlazo los formularios
pasando el id de empresa como parametro:
<%= start_form_tag :action => 'createcentro', :id => @empresa %>

y creo los metodos para crear un registro actividad al estilo del scaffold:

Código HTML:
 def newactividad
        @empresa = Empresa.find(params[:id])
  end

  def createactividad
    @empresa = Empresa.find(params[:id])
    @actividad = Actividad.new(params[:actividad])
    @empresa.actividad =@actividad
-->    if @actividad.save
      flash[:notice] = 'Actividad was successfully created.'
      redirect_to :action => 'show', :id => Empresa.find(params[:id])
    else
      render :action => 'newactividad', :id => Empresa.find(params[:id])
    end
  end
pero la linea
if @actividad.save me da un error indicando:

Código HTML:
Mysql::Error: #42S22Unknown column 'id' in 'where clause':
 UPDATE actividads
  SET `empresa_id` = 24, `iae` = NULL,  ...
?->>>  WHERE id = 0
no me gusta saltarme este paso y no comprobar q el registrpo se guardo,
pero de todas formas veo q algo estoy haciendo mal si tengo q pasar tanto parametro de aqui alli, pues la programacion por objetos no es asi.
  #2 (permalink)  
Antiguo 09/11/2006, 11:01
 
Fecha de Ingreso: enero-2006
Mensajes: 48
Antigüedad: 18 años, 3 meses
Puntos: 0
De hecho, no puedes saltarte @actividad.save, o si no tu nuevo registro no se creará.

En cuanto al error de MySQL, ¿seguro que en la BD la tabla 'actividad' tiene el campo de 'id'? Por cierto, ¿has visto que Rails tiene problemas para pluralizar 'actividad', se limita a ponerle un 's' --> 'actividads'. Si tu tabla se llama 'actividades', por ahí pueden ir también los tiros.
__________________
------------------------------
http://www.sobrerailes.com
  #3 (permalink)  
Antiguo 09/11/2006, 15:06
 
Fecha de Ingreso: agosto-2006
Mensajes: 316
Antigüedad: 17 años, 8 meses
Puntos: 0
finalmete con anadir un campo id a la tabla fue suficiente.

asi queda el metodo:



def newactividad
@empresa = Empresa.find(params[:id])
end

def createactividad
@empresa = Empresa.find(params[:id])
@actividad = Actividad.new(params[:actividad])
@empresa.actividad =@actividad

if @actividad.save
flash[:notice] = 'Actividad was successfully created.'
redirect_to :action => 'show', :id => Empresa.find(params[:id])
else
render :action => 'newactividad'
end

end

ahora voy a estudiar pq es necesario el dichoso id
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:01.