[Ror-es] #include en ruby

Xavier Noria fxn at hashref.com
Sat Sep 23 13:22:42 GMT 2006


On Sep 23, 2006, at 2:38 PM, Xavier Noria wrote:

> El problema que creo ver es que al ejecutar metodos estaticos como
> has_many self es la clase abstracta (esas lineas se evaluan al
> interpretar el codigo de creacion de la clase, no cuando la herencia)
> y por tanto la clave foranea por defecto no es hijo_id, sino
> abstract_id, necesita configuracion. Si no funciona supongo que
> quiere un nombre de llave distinto por hijo, por lo que entonces
> has_many no puede aprovecharse de ese modo.

Aja, visto de ese modo, si se quieren llaves por hijo y demas valores  
por defecto por hijo como si has_many and friends se ejecutara en el  
hijo, entonces una solucion idiomatica es:

   class Abstract < ActiveRecord::Base
     self.abstract_class = true

     def self.setup_common_associations
       has_many :foos
       has_one  :bar
     end
   end

   class X < Abstract
     setup_common_associations
   end

   class Y < Abstract
     setup_common_associations
   end

-- fxn



More information about the Ror-es mailing list