5

我正在与一个网站合作,该网站将从许多不同的来源中提取提要,然后将这些流保存到一个通用模型中,在这种情况下是一个特征。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

诚然,我是java出身,在java这里,我会设置一个继承层次结构,然后在FeedEntry的每个子类上扩展parse方法,让每个FeedEntry都知道如何解析自己。所以我的问题是:
1)这是一个可行的计划吗?
2)如果是这样,是否只包含一个基本上是“类型”的列,说明 FeedEntry 是什么子类?
3)如果没有,对 DRYest 方法有什么建议吗?

谢谢!

4

1 回答 1

2

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

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

于 2010-02-22T08:20:50.737 回答