Problema con Migrations valor null en un campo

Estoy tratanto de hacer una migration que modifica 2 campos
de una tabla, cambiando su valor “not nul” por “null” entonces
paso a detallar la tabla:

create_table “orders”, :force => true do |t|
t.column “nro_expediente”, :string, :limit => nil
t.column “doctype_id”, :integer
t.column “documento”, :string, :limit => 10
t.column “libro”, :integer, :null => false
t.column “pagina”, :integer, :null => false
t.column “tomo”, :integer
end

entonces la migration me quedó así

#002_alter_orders.rb

class AlterOrders < ActiveRecord::Migration
def self.up
change_column :orders, :libro, :integer, :null_allowed =>true
change_column :orders, :pagina,:integer, :null_allowed =>true
change_column :orders, :tomo, :integer, :null => false
end

def self.down
change_column :orders, :libro, :integer, :null => false
change_column :orders, :pagina,:integer, :null => false
change_column :orders, :tomo, :integer, :null_allowed =>true
end
end


entonces corro la migrate

rake migrate VERSION=2

== AlterOrders: migrating

– change_column(:orders, :libro, :integer, {:null_allowed=>true})
-> 0.0236s
– change_column(:orders, :pagina, :integer, {:null_allowed=>true})
-> 0.0569s
– change_column(:orders, :tomo, :integer, {:null=>false})
-> 0.0145s
== AlterOrders: migrated (0.0957s)

Aparentemente todo salió bien, sin embargo cuando voy a la base, nada
cambió probé hacer otros cambios como agregar un campo y funciona, al
parecer
el problema esta cuando tengo un campo que es “not null” y luego quiero
cambiarlo a “null”, que es lo que yo necesito.
Alquien le pasó lo mismo?
Estoy haciendo algo mal?

Saludos.

Gaston,
No podes volver para atrás eso, :null_alowed me parece que no funciona,
tendría que mirar el manual,
si la base de datos es sqlite, no podes hacer un alter table, no lo
soporta
el sqlite,
si la base de datos es otra no te lo permite el rails, tenes que poner
en el
migrate el comando sql para forzar el cambio con execute “alter table
…”

On 11/27/06, Gaston R. [email protected] wrote:

t.column “tomo”, :integer
end
entonces corro la migrate
→ 0.0145s
Saludos.
Quizá lo hayan cambiado en versiones recientes, pero creo que
“:null_allowed” es simplemente un comentario en la documentación y hay
que utilizar siempre la opción “:null”… además la interpretación de
esas opciones es tarea del adaptador, y al menos a mi el de SQLite
hace algunas cosas raras con los “:null” y con los “:default”.