5

Je travaille avec un site qui va extraire des flux de nombreuses sources différentes, puis enregistrer ces flux dans un modèle commun, en ce cas est un trait. Un exemple de code à partir de la classe FeedEntry pourrait être:L'héritage du modèle, le modèle Factory, et l'auto-analyse dans 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 

Il est vrai que je viens d'un milieu java, et en java ici, je mis en place une hiérarchie d'héritage, puis sur chaque sous-classe de FeedEntry étendre la analyser la méthode de sorte que chaque FeedEntry savait comment analyser lui-même. Donc, mes questions:
1) Est-ce un plan faisable dans les rails?
2) Si oui, est-ce que l'on inclurait simplement une colonne qui était essentiellement "type" qui indiquait quelle sous-classe FeedEntry était?
3) Si non, des suggestions sur la façon la plus sèche de le faire?

Merci!

Répondre

2

Je pense que vous pouvez utiliser l'héritage de table unique que les rails fournissent. Voir: http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/ et http://api.rubyonrails.org/classes/ActiveRecord/Base.html. Ensuite, vous pouvez ajouter la méthode d'analyse dans chacune de vos classes "héritées". Vous pouvez ajouter un rappel before_save et appeler self.parse. Je ne suis pas sûr si c'est le moyen le plus sec de faire ceci .. serait intéressant de voir ce que les autres disent.

Questions connexes