Foros del Web » Programando para Internet » Ruby »

Problemas con un campo "id" que no existe

Estas en el tema de Problemas con un campo "id" que no existe en el foro de Ruby en Foros del Web. Hola amigos, mi problema es el siguiente: Creo mis tablas con el rake db:migrate y todo esta perfecto pero cuando pruebo mi pagina en mi ...
  #1 (permalink)  
Antiguo 16/06/2008, 13:36
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 10 meses
Puntos: 0
Problemas con un campo "id" que no existe

Hola amigos, mi problema es el siguiente:

Creo mis tablas con el rake db:migrate y todo esta perfecto pero cuando pruebo mi pagina en mi browse y quiero dar de alta un registro me aparece el siguiente error:

Mysql::Error: #42S22Unknown column 'responsables.id' in 'where clause': SELECT * FROM `responsables` WHERE (`responsables`.`id` = '0')

Pero yo no tengo ningun campo "id" en mi tabla, modifique mi archivo rb de la siguiente manera:

----------------------------------------
class CreateDepartamentos < ActiveRecord::Migration
def self.up
create_table :departamentos, :id=>false do |t|
t.string :cvedept, :limit=>10, :null=>false
t.string :desdept, :limit=>20, :null=>false

t.timestamps
end

#Genera la primary key
execute "ALTER TABLE `departamentos` ADD PRIMARY KEY(`cvedept`)"
end

def self.down
drop_table :departamentos
end
end

-------------------------------

Con "id:=>false" evito que ruby genere automaticamente un id en mi tabla. Espero me puedan ayudar
  #2 (permalink)  
Antiguo 17/06/2008, 15:36
 
Fecha de Ingreso: enero-2006
Mensajes: 48
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas con un campo "id" que no existe

Por defecto las migraciones crearán el campo 'id' automáticamente, sin que se lo tengas que decir. Si le pones lo de :id => false estás forzandolo a que no cree el campo 'id', de manera que onsultas como la que pones no van a funcionar de ninguna manera.
__________________
------------------------------
http://www.sobrerailes.com
  #3 (permalink)  
Antiguo 29/06/2008, 23:35
Avatar de Yaraher  
Fecha de Ingreso: abril-2007
Ubicación: Lima, Perú
Mensajes: 262
Antigüedad: 17 años, 8 meses
Puntos: 9
Respuesta: Problemas con un campo "id" que no existe

Efectivamente, con :id=>false evitas que se genere una llame primaria con ese nombre, pero falta indicarle a tu modelo que columna utilizar en su defecto. Esto se hace mediante:

Código:
class Departamento < ActiveRecord::Base
    set_primary_key "cvedept"
  end
Rails automáticamente entenderá que con ese modelo debe utilizar el campo que has especificado como llave primaria y generará las consultas debidas con ese fin (con Departamento.find(:all) por ejemplo)
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 11:15.