Foros del Web » Programando para Internet » Ruby »

[SOLUCIONADO] Problema con ActiveRecord

Estas en el tema de Problema con ActiveRecord en el foro de Ruby en Foros del Web. Hola que tal, bueno tengo un problema que no logro compronder muy bien del porque Tengo mi modelo, donde se crea una tabla que necesito: ...
  #1 (permalink)  
Antiguo 31/03/2014, 20:25
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Problema con ActiveRecord

Hola que tal, bueno tengo un problema que no logro compronder muy bien del porque

Tengo mi modelo, donde se crea una tabla que necesito:

Código Ruby:
Ver original
  1. create_table :campos do |t|
  2.       t.integer :numproveedor,                                                                :null => false
  3.       t.string "campo1",             limit: 60,        :default => ''
  4.       t.string :campo2,               limit: 20,        :default => '',                   :null => false
  5.       t.string :campo3,               limit: 30,        :default => '',                   :null => false
  6.     end

Se crea en SQL mi tabla, pero al revisar los campos, son del doble del tamaño que yo les defini:

Código SQL:
Ver original
  1. Column_name        |    TYPE                |       LENGTH
  2. -----------------------------------------------------------------------
  3. campo1                  |    nvarchar          |          120
  4. campo2                  |    nvarchar          |            40
  5. campo3                  |    nvarchar          |            60

Y no entiendo el porque si yo le estoy especificando el tamaño. Ya revise en github para ver la gema, pero esta bien como la estoy declarando y en teoria, si se tendria que generar como yo le indico

Si alguien sabe el porque, le agradeceria me lo comentara o bien me pasara el link para revisar.

Version de Rails => 4.0.4
Version de Ruby => ruby 1.9.3p484
__________________
Your Code as a Crime Scene...
  #2 (permalink)  
Antiguo 01/04/2014, 00:13
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema con ActiveRecord

Esa modificacion la hiciste antes de correr "rake db:migrate"? Si corriste la migracion y despues hiciste la modificacion no funcionara, las migraciones se versionan y si ya se corrio, no se vuelve a correr.

Revisa tu archivo schema.rb, ese archivo se genera con las migraciones.

Saludos!
__________________
>> abimaelmartell.com
  #3 (permalink)  
Antiguo 01/04/2014, 01:42
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Problema con ActiveRecord

Hola, gracias por responder abimex.

Corri el rake db:migrate, cuando me di cuenta que me genero las tablas con valores muy elevados, corri el rake db:rollback, con eso destrui la tabla y lo modifique por los nuevos valores que necesitaba y corri de nueva cuenta el rake db:migrate.

Con eso me genera la tabla de nueva cuenta, pero por mas que le pongo los valores que quiero, no los cambia

Que sera??
__________________
Your Code as a Crime Scene...
  #4 (permalink)  
Antiguo 01/04/2014, 09:47
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Problema con ActiveRecord

Antes que se me olvide, revise el schema.rb y si esta la estructura de la tabla esta como la declare, pero en el SQL la tabla esta diferente.
__________________
Your Code as a Crime Scene...
  #5 (permalink)  
Antiguo 01/04/2014, 10:20
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema con ActiveRecord

por cierto, que motor de base de datos usas? postgres?
__________________
>> abimaelmartell.com
  #6 (permalink)  
Antiguo 01/04/2014, 11:13
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Problema con ActiveRecord

Uso SQL Server 2008 R2.

Me parece raro, que en el schema si me lo marca bien, como yo lo defini en el modelo, pero en la BD me lo pone el tamaño duplicado del campo.

Lo mas raro que se me hace, es que si yo le cambio el tamaño por la mitad ( Ejemplo: lo pongo de 30 caracteres, para que me lo refleje de 60 en el SQL Server ) al querer copiarle información de la tabla origen a la nueva me marca error, como si quisiera insertar mas registros de los que soporta el campo

Eso se me hace raro, por mientras trabajare con el campo, como me lo esta dejando el modelo, puesto que es el que me esta funcionando correctamente, pero seguire investigando.

__________________
Your Code as a Crime Scene...
  #7 (permalink)  
Antiguo 01/04/2014, 13:14
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema con ActiveRecord

¿puedes crear un registro con mas de 30 caracteres en donde le limitas a 30?, por que lei algo de que los limits no funcionaban igual en ese servidor.

Si no, pregunta en el sitio de la gema

https://github.com/rails-sqlserver/a...adapter/issues

Crea un issue con tu problema, es un problema muy especifico de la gema y ahi estan los desarrolladores.

Saludos!
__________________
>> abimaelmartell.com
  #8 (permalink)  
Antiguo 02/04/2014, 10:26
 
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 33
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Problema con ActiveRecord

Al estar usando SQL Server el adaptador está usando por defecto el tipo 'nvarchar' que es un string de tamaño variable para caracteres extendidos y/o internacionales de ahi que el tamaño que especificas se duplica porque SQL Server reserva dos bytes por caracter.

No sé si puedes especificar en la migración el tipo de datos que quieres usar: 'varchar' en lugar de 'nvarchar', supongo que leyendo la documentación se puede salir de dudas.
  #9 (permalink)  
Antiguo 03/04/2014, 18:32
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Problema con ActiveRecord

Hola buenas tardes. Gracias por responder abimex y chillicoder.

Como comenta chillicoder

Cita:
Al estar usando SQL Server el adaptador está usando por defecto el tipo 'nvarchar' que es un string de tamaño variable para caracteres extendidos y/o internacionales de ahi que el tamaño que especificas se duplica porque SQL Server reserva dos bytes por caracter.

No sé si puedes especificar en la migración el tipo de datos que quieres usar: 'varchar' en lugar de 'nvarchar', supongo que leyendo la documentación se puede salir de dudas.
Los campos son nvarchar, asi los reconoce, hice varias pruebas cambiando a char, pero el controlador no lo acepta, generando de la misma forma la estructura de la tabla.

__________________
Your Code as a Crime Scene...

Etiquetas: rails, sql
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:09.