模型继承,Factory模式和Ruby-on-Rails中的自解析

5 rss inheritance design-patterns ruby-on-rails factory-pattern

我正在使用一个站点,该站点将从许多不同的源中提取源,然后将这些流保存到一个通用模型中,在这种情况下是一个特征.FeedEntry类中的代码示例可能是:

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
Run Code Online (Sandbox Code Playgroud)

不可否认,我来自java背景,在java中,我会建立一个继承heirarchy,然后在FeedEntry的每个子类上扩展parse方法,以便每个FeedEntry都知道如何解析自己.所以我的问题:
1)这是一个可行的铁路计划吗?
2)如果是这样,是否只包含一个基本上是"类型"的列,表示FeedEntry的子类是什么?
3)如果没有,有关DRYest方法的任何建议吗?

谢谢!

NM.*_*NM. 2

我认为你可以使用rails提供的单表继承。请参阅: http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/http://api.rubyonrails.org/classes/ActiveRecord/Base.html

之后,您可以在每个“继承”类中添加解析方法。您可能想要添加 before_save 回调并调用 self.parse 。我不确定这是否是最干燥的方法..看看其他人怎么说会很有趣。