Viviendo al filo (de Rails) #22

(Este artículo es una traducción de Living on the edge of Rails (22), publicado por Chu Yeow en su blog redemption in a blog)

No ha habido cambios alucinantes en esta semana previa a la RailsConf -tal y como mencionó Gregg en el podcast de RailsEnvy estamos en la antesala de Rails 2.1 (probablemente será lanzado durante la misma RailsConf), así que es comprensible esta tranquilidad. Ah, y ahora todos los tests pasan con Ruby 1.9 después de que un recalcitrante error en module_eval haya sido corregido en el trunk de Ruby 1.9. (Véase este hilo para más información)

El informe de esta semana cubre los cambios efectuados en Rails entre el 19 y el 25 de Mayo de 2008.

Métodos first y last en asociaciones y ámbitos con nombre

¿Recordais cómo la integración de la gema has_finder nos permitía hacer cosas como Post.first y Post.last?

Ahora podemos ir un paso más allá y utilizar los mismo métodos en las asociaciones ActiveRecord. Por ejemplo:


post = Post.find(1)
first_comment = post.comments.first

Y si hemos definido un named scope llamado recent, podemos incluso hacer:


post.comments.recent.last

Esta pequeña mejora es cortesía de Ryan Bates (sí, el Ryan Bates de RailsCasts)

Métodos exist? y fragment_exist? para la caché

Los almacenes de caché en Rails (memcache, fichero, etc) ahora disponen de un método exist? que comprueba si la caché dispone de un valor guardado para una clave dada. Esto permite que los controladores Rails dispongan de un método fragment_exist? que nos permite preguntar si existe un fragmento de caché.


fragment_exist?('example.com/foo/bar')

El cambio correspondiente es http://github.com/rails/rails/commit/99860b72aebe0348f41e82d4710343498d89a84b#diff-2

Creación de registros en asociaciones con bloques como argumento

Ahora se pueden crear registros para asociaciones así


post.comments.create!(:title => 'Techcrunch') do |c|
     c.body = "Rails no escala!"
end

Todo esto va parejo con el reciente cambio en ActiveRecord::Base.create del que ya hemos hablado por aquí

El autor de este parche es (otra vez) Ryan Bates

El cambio es este

¡Hasta la semana que viene!

blog comments powered by Disqus