Forum: Rails-ES Incluir Registros en una Tabla sin ID Autoincrement

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Manuel P. (Guest)
on 2009-05-23 19:06
(Received via mailing list)
Hola a todos!
Amigos tengo un problema y me he cansado de buscar por google y no
encuentro
respuesta. Le comento:
Tengo una tabla articulos la cual es de otro sistema desarrollado en PHP
por
otra gente, entonces mi sistema (obviamente desarrollado en RoR 2.1.2)
consulta los registros de una tabla llamada articulos del otro sistema
sin
problemas. Mi aplicacion realiza la consulta, paginacion del catalogo y
la
edicion de cualquier registro sin problemas. el detalle esta al momento
de
incluir, debido a que la tabla Articulos no tiene el campo id en
autoincremento mi aplicacion no me guarda ningun registro :s
incluso hago la instruccion create a mano, es decir:
Articulo.create(:id => params[:articulo][:id], :descripcion => =>
params[:articulo][descripcion])
al momento de guardar el sistema da un error diciendo que se viola la
restriccion de NOT NULL en el campo id de la tabla Articulos
"insert into articulos (descripcion) values ('Camisa para mujer')"
Por lo que veo Rails me quita o ignora el campo id que le estoy pasando
por
parametro en el create

Entonces como hago?
alguien que me de una luz no encuentro la solucion... porque no puedo
poner
el campo en la BD autoincremento porque entonces daño el otro sistema
echo
en PHP ademas que esa tabla ya tiene mas de 80.000 articulos registrados
cuyos ID ya estan relacionados con otros registros y postgres no me deja
cambiar el campo de la tabla
show gmail (Guest)
on 2009-05-23 19:15
(Received via mailing list)
Entiendo que el problema está en que la tabla es atacada por una
aplicación
en PHP y otro en Ruby on Rails, la PHP se las ingenia como sea para ir
metiendo datos y gestionando esa ID.
Así que tu deberías hacer algo parecido en Ruby, investiga un poco como
PHP
asigna esas IDs a los nuevos artículos.
Si no hay huecos en la Base de datos (todas las ID's están usadas y
nunca
una será eliminada) puedes hacer un COUNT y sumarle uno para saber cual
tiene que ser la nueva ID. Si no es así no puedo decir más.

Saludos

2009/5/23 Manuel P. <removed_email_address@domain.invalid>
Juan G. (Guest)
on 2009-05-23 19:51
(Received via mailing list)
No sé si te he terminado de entender.
Quieres importar una BD de una aplicación que usaba PHP a una que
trabaje
con Rails. El modelo Articulo en Rails tiene el campo ID pero no es
autoincremental y no sabes como asignarle el valor "legacy" que viene de
la
otra BD, verdad? Confírmame que es la historia, tal vez te puede pasar
algo
para solucionar ese asunto.

- Juan


2009/5/23 show gmail <removed_email_address@domain.invalid>
Guillermo (Guest)
on 2009-05-24 01:09
(Received via mailing list)
2009/5/23 Manuel P. <removed_email_address@domain.invalid>

> Articulo.create(:id => params[:articulo][:id], :descripcion => =>
> params[:articulo][descripcion])


Si no me equivoco, id es un atributo protegido, por lo que no toma valor
en
una asignación masiva.
¿Has probado algo así?

a = Articulo.new(:descripcion => params[:articulo][descripcion])
a.id =  params[:articulo][:id]
a.save



--
Guillermo Álvarez

Sent from Madrid, Spain
Manuel P. (Guest)
on 2009-05-25 01:09
(Received via mailing list)
hola guillermo gracias por responder...
mira hice la prueba que me dijiste.
Despues de a.save coloque un flash[:notice] = "Articulo incluido
satisfactoriamente"
me sale el mensaje y todo el sistema no me genera error pero cuando
reviso
en la base de datos el articulo no se incluyó... no entiendo quede en el
aire

El 24 de mayo de 2009 16:38, Guillermo <removed_email_address@domain.invalid>
escribió:
Manuel P. (Guest)
on 2009-05-25 01:10
(Received via mailing list)
no mentira guillermo ya lo consegui si se incluyo el registro gracias
hermano excelente tu solucion

El 25 de mayo de 2009 16:38, Manuel P.
<removed_email_address@domain.invalid>escribió:
Fj W. (Guest)
on 2009-09-23 02:42
a = Articulo.new(:descripcion => params[:articulo][descripcion])
a.id =  params[:articulo][:id]
a.save


saludos...

---
Manuel P. wrote:
> Hola a todos!
> Amigos tengo un problema y me he cansado de buscar por google y no
> encuentro
> respuesta. Le comento:
> Tengo una tabla articulos la cual es de otro sistema desarrollado en PHP
> por
> otra gente, entonces mi sistema (obviamente desarrollado en RoR 2.1.2)
> consulta los registros de una tabla llamada articulos del otro sistema
> sin
> problemas. Mi aplicacion realiza la consulta, paginacion del catalogo y
> la
> edicion de cualquier registro sin problemas. el detalle esta al momento
> de
> incluir, debido a que la tabla Articulos no tiene el campo id en
> autoincremento mi aplicacion no me guarda ningun registro :s
> incluso hago la instruccion create a mano, es decir:
> Articulo.create(:id => params[:articulo][:id], :descripcion => =>
> params[:articulo][descripcion])
> al momento de guardar el sistema da un error diciendo que se viola la
> restriccion de NOT NULL en el campo id de la tabla Articulos
> "insert into articulos (descripcion) values ('Camisa para mujer')"
> Por lo que veo Rails me quita o ignora el campo id que le estoy pasando
> por
> parametro en el create
>
> Entonces como hago?
> alguien que me de una luz no encuentro la solucion... porque no puedo
> poner
> el campo en la BD autoincremento porque entonces daño el otro sistema
> echo
> en PHP ademas que esa tabla ya tiene mas de 80.000 articulos registrados
> cuyos ID ya estan relacionados con otros registros y postgres no me deja
> cambiar el campo de la tabla
This topic is locked and can not be replied to.