Publicidad:
La Coctelera

Sugerencia de presentación

He nacido para vago

20 Septiembre 2008

Hyperdelegate

Disponible en sabor mini-plugin y en sabor Rails patch.

Se trata de una pequeña mejora al método delegate (ya sabes, ese arma casi imprescindible en la eterna lucha contra Demetrio), que incorpora un par de patrones bastante frecuentes.

Para los despistados, delegate es un método incluído en ActiveSupport que permite, eso, delegar un método en otro objeto, por ejemplo:

 class Address < AR::B
   # has attributes street and number
 end
 
 class Person < AR::B
   has_one :address
   delegate :street, :number, :to => :address
 end
 
 Person.find(1).street # 'General Patton'
 

Sin embargo esto es un poco limitado y con frecuencia nos encontrábamos sustituyéndolo por algo más engorroso para cosas sólo levemente más complejas:

 class Person
   def town
     address.city
   end
 end
 

ó:

 class Person
   def street
     address && address.street
   end
 end
 

Éste último en particular es un patrón bastante habitual. Y además es algo que preocupa a más gente porque sin buscar demasiado hemos encontrado dos propuestas de solución.

Con Hyperdelegate, estos dos ejemplos quedarían reducidos a:

 class Person
   delegate :town, :to => :city, :target => :city
   delegate :street, :to => :address, :allow_nil => true
 end
 

Como digo aparte del miniplugin hemos propuesto esta mejora al core de Rails así que si la probáis y os funciona bien y os mola votadla para que entre .

servido por porras sin comentarios compártelo

sin comentarios · Escribe aquí tu comentario

Escribe tu comentario


Sobre mí

Avatar de porras

Sugerencia de presentación

ver perfil »
contacto »

Me llamo Sergio Gil Pérez de la Manga, y mi madre se cabrea si escribo mi nombre con un sólo apellido. Vivo, trabajo y hago casi todo lo demás en Madrid.

Trabajo como programador porque es lo más parecido que he encontrado a no trabajar. Sobre todo si lo haces bien. Y en eso estoy, en hacerlo cada vez mejor para trabajar cada vez menos. Alguno lo llamaría vagancia, y yo ahí no me meto.

Algunas de las herramientas que en este momento me llevan al Nirvana de no dar un palo al agua son Ruby, Ruby on Rails, Textmate, cualquier sabor de Unix (en este momento principalmente MacOSX pero también Ubuntu Linux) y sus herramientas, o Rake. En ocasiones hablo de ellas aquí, pienso que a alguien le pueden servir y que no puedo ser el único al que no le gusta trabajar.

Y como no sólo de tecnología vive el hombre (bueno, el hombre no sé, pero desde luego yo no), por aquí aparece de vez en cuando la punta del iceberg de mis pequeños pensamientos; al menos la parte de ellos que no cabe en Twitter.

Bienvenidos todos.

Y ahora: ¿Y tú?

Fotos

porras todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera