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.