Scaffolding y edición de columnas numeric(xxx,0)

Saludos a todos.

Estoy usando Rails 1.2 y tengo el siguiente problema con el formulario
de edición del scaffold:

Tengo la tabla siguiente (en PostgreSQL 8.1):

CREATE TABLE empleados
(
id serial NOT NULL,
emp_no numeric(4,0),
apellido varchar(10),
oficio varchar(10),
dir numeric(4,0),
fecha_alt date,
salario numeric(10,0),
comision numeric(10,0),
dept_no numeric(2,0),
CONSTRAINT empleados_pkey PRIMARY KEY (id)
);

Creo una aplicación mínima con “rails prueba”, configuro la conexión
adecuadamente, y luego:

prueba> ruby script/generate model empleado
prueba> ruby script/generate scaffold empleado admin

Compruebo que todo funciona muy bien. Sin embargo, en el formulario de
edición de datos, los campos numéricos me aparecen con una parte decimal
.0.

Por ejemplo, si la columna emp_no contiene el valor 7499, en el
formulario de edición me aparece como 7499.0

Y así con todos los valores numéricos.

En el resto del scaffolding (en list, show, etc.) aparece bien, sin la
parte decimal .0

¿Alguien sabe por qué puede pasar eso, y cómo puedo corregir el
problema?

Decláralos integer y no numeric en la BBDD.
Saludos.

Maxi

Un ejemplo más claro:

La URL http://localhost:3000/admin/show/1 me devuelve ésto:

Emp no: 7369

Apellido: SÁNCHEZ

Oficio: EMPLEADO

Dir: 7902

Fecha alt: 1980-12-17

Salario: 104000

Comision:

Dept no: 20

Edit | Back

Sin embargo, la URL http://localhost:3000/admin/edit/1 me devuelve un
formulario con estos campos y contenidos:

Emp no
7369.0

Apellido
SÁNCHEZ

Oficio
EMPLEADO

Dir
7902.0

Fecha alt
1980 December 17

Salario
104000.0

Comision

Dept no
20.0

Edit
Show | Back

Como se ve, en el formulario de edición los valores numéricos tienen un
engorroso .0 detrás, que no está en ningún otro sitio (ni en el show, ni
en el list, ni en la base de datos).

Y, como digo, estoy usando PostgreSQL 8.1. No sé si tendrá algo que
ver…

Como información adicional, ésto es lo que me sale cuando entro en la
consola:

$ ruby script/console
Loading development environment.

e = Empleado.find(1)
=> #<Empleado:0xb76caa54 @attributes={“apellido”=>“SÁNCHEZ”,
“dir”=>#BigDecimal:b76cab1c,‘0.7902E4’,4(8),
“emp_no”=>#BigDecimal:b76cab6c,‘0.7369E4’,4(8),
“dept_no”=>#BigDecimal:b76caa7c,‘0.2E2’,4(8), “oficio”=>“EMPLEADO”,
“id”=>“1”, “comision”=>nil, “fecha_alt”=>“17-12-1980”,
“salario”=>#BigDecimal:b76caae0,‘0.104E6’,8(12)}>

e.emp_no
=> 7369

e.emp_no.class
=> Fixnum

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs