BetterNestedSet en Rails 2.1

Escrito por nelson Wed, 11 Jun 2008 01:18:00 GMT

Hay un plugin muy interesante para Rails llamado BetterNestedSet que permite generar modelos con generarquías anidades, el ejemplo clásico son las categorías de un producto, donde puede haber categorías de categorías.

El problema con este plugin es que no funciona bien con Rails 2.1, porque la última versión de Rails modifica los parámetros de un método que este plugin reemplaza.

Ya le envié el patch al autor, mientras tanto dejo acá también la actualización del método en el plugin para cualquiera que pueda necesitarlo.

#reemplazar este metodo en better_nested_set.rb
def attributes_with_quotes(include_primary_key = true, include_readonly_attributes = true, attribute_names = @attributes.keys)
  left_and_right_column = [acts_as_nested_set_options[:left_column], acts_as_nested_set_options[:right_column]]
  quoted = {}
  connection = self.class.connection
  attribute_names.each do |name|
    if column = column_for_attribute(name)
      quoted[name] = connection.quote(read_attribute(name), column) unless !include_primary_key && (column.primary || left_and_right_column.include?(column.name))
    end
  end
  include_readonly_attributes ? quoted : remove_readonly_attributes(quoted)
end

Inicialización no estandar de objetos ActiveRecord

Escrito por nelson Wed, 07 May 2008 18:21:00 GMT

Me estuve peleando con un modelo de ActiveRecord, porque tenía que manejar ciertos estados internos del modelo que no están en campos de la base de datos, sinó que son datos calculados cuando se carga un registro de la base de datos.

El primer intento lo hice haciendo una sobre escritura del método initialize de ActiveRecord pero muy pronto me di cuenta de que no funcionaba cuando se buscaba por un objeto con algún método find.

Luego de hacer muchas pruebas y que ninguna funcionara, terminé mirando la implementación de ActiveRecord a ver si encontraba alguna pista y si, ahí estaba.

Cuando se utiliza algún método de búsqueda, los objetos se instancian con un método llamado ‘instantiate’ y al finalizar se llama a dos callbacks si existen en la clase del modelo, que son :after_find y :after_initialize

Así que todo lo que tuve que hacer fue; mover el código de cálculo de estado del modelo a un método llamado ‘after_initialize’, y ahora anda todo perfecto !

Ruby Hoedown 2007 Videos

Escrito por nelson Fri, 24 Aug 2007 00:55:00 GMT

En Confreaks están disponibles los videos de la conferencia Ruby Hoedown que se hizo hace un par de días. Hay un par de charlas muy buenas para ver.

También hay una entrevista Ezra Zygmuntowicz el creador de Merb entre otras cosas.

Para ponerlo en el bookmark y pasar un fin de semana entretenido.

via: InfoQ

Rhino sobre Rails

Escrito por nelson Sat, 14 Jul 2007 02:10:00 GMT

Leyendo un post de John Lam (es el que creador de RubyCRL y actualmente esta empleado por Microsoft) me entero que Steve Yegge dio una charla en Foo Camp titulada “Google Rails Clone” en la que comentaba el trabajo de portar Rails para funcionar sobre Rhino, una implementación de Javascript que funciona sobre Java.

Recomiendo mucho leer el post de Steve Yegg sobre el descargo de que es lo que realmente hicieron y porque reimplementaron sobre Javascript en vez de usar la versión original de Ruby. Muy interesante, para conocer algo de como se trabaja en Google.

Soy malo y les adelanto el final…... el código es de uso interno de Google y no va a ser liberado, al menos en el corto plazo.

No todo es Rails, también esta Merb !

Escrito por nelson Thu, 03 May 2007 19:48:00 GMT

Una presentación muy interesante de Ezra Zygmuntowicz sobre como implementar manejadores (handlers) en Mongrel y una introducción Merb.

Anteriores: 1 2 3 ... 5