Este artículo es una traducción de Living on the edge of Rails (19), publicado por Chu Yeow en su blog redemption in a blog.
Esta entrada cubre los cambios realizados en Rails entre el 29 de Abril y el 4 de Mayo de 2008.
change_table para las migraciones ActiveRecord
Gracias a Jeff Dean, que también ha escrito sobre la nueva funcionalidad podemos modificar una tabla con un bloque de la siguiente manera:
change_table :videos do |t|
t.add_timestamps
t.add_belongs_to :goat
t.add_string :name, :email, :limit => 20
t.remove_column :name, :email # puede recibir varios argumentos
t.rename :new_name
t.string :new_string_column # se ejecuta contra el nombre cambiado
end
Las funcionalidades clave son:
- add_XX añadirá una nueva columna. Por ejemplo, add_string añadirá una nueva columna de tipo string
- Por supuesto add_timestamps añadirá los cambios mágicos created_at y updated_at
- remove_column puede recibir varios argumentos
- rename renombraría la tabla
Una excelente mejora, de nuevo gracias a Jeff Dean. El grupo de cambios correspondiente a este parche es http://github.com/rails/rails/commit/96980bd561d79824b6cb6efbcbecdcbf8785d452
ActiveRecord::Base recibe un bloque, al igual que ActiveRecord::Base.new
En efecto, ahora podemos crear objectos ActiveRecord pasando un bloque como argumento exactamente igual que con ActiveRecord::Base.new:
@person = Person.create(params[:person]) do |p|
p.name = 'Konata Izumi'
p.age = 17
end
El autor es Adam Meehan, y el grupo de cambios correspondiente a este parche es http://github.com/rails/rails/commit/dd120ede53eaf71dee76894998a81626b7a689fc
Arreglo: change_column debería poder usar :null => true en un campo que anteriormente estaba marcado como false
Ahora podemos usar change_column en nuestras migraciones para alterar una columan como nulificable si anteriormente estaba marcada como NOT NULL
Esta corrección es cortesía de Nate Wiger y el grupo de cambios relacionado es http://github.com/rails/rails/commit/10ef65a3b054270ed3d458ec8eb7c2b9a3e638f7


Sorry, comments are closed for this article.