5

Estoy trabajando con un sitio que extraerá fuentes de muchas fuentes diferentes y luego las guardará en un modelo común, en este caso es un rasgo. Un ejemplo de un código de dentro de la clase FeedEntry podría ser:Herencia del modelo, el patrón Factory y el autodiagnóstico en Ruby-on-Rails

feed = Feedzirra::Feed.fetch_and_parse(feed_url) 
add_entries(feed.entries) 
... 

def self.add_entries(entries) 

    entries.each do |entry| 
     # Should know how to parse itself into a trait   
     @trait = parse(entry) 
     if @trait.save 
     ... 
    end 
end 

La verdad es que provienen de un fondo de Java, y en Java aquí, yo establecería una jerarquía de herencia, y luego en cada subclase de FeedEntry extender la analizar el método para que cada FeedEntry supiera cómo analizarse a sí mismo. Entonces mis preguntas:
1) ¿Es este un plan factible en los rieles?
2) De ser así, ¿se incluiría simplemente una columna que era básicamente "tipo" que decía qué subclase era FeedEntry?
3) De lo contrario, ¿alguna sugerencia sobre la manera DRYest de hacer esto?

Gracias!

Respuesta

2

Creo que puede usar la herencia de tabla única que ofrecen los rieles. Consulte: http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/ y http://api.rubyonrails.org/classes/ActiveRecord/Base.html.

Después de eso, puede agregar el método de análisis en cada una de sus clases "heredadas". Es posible que desee agregar una devolución de llamada before_save y llamar a self.parse. No estoy seguro si esta es la manera más rápida de hacer esto ... sería interesante ver lo que otros dicen.

Cuestiones relacionadas