【问题标题】:Model inheritance, the Factory pattern, and self-parsing in Ruby-on-RailsRuby-on-Rails 中的模型继承、工厂模式和自解析
【发布时间】:2010-02-22 04:20:01
【问题描述】:

我正在与一个网站合作,该网站将从许多不同的来源中提取提要,然后将这些流保存到一个通用模型中,在本例中是一个特征。 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)这在rails中是一个可行的计划吗?
2) 如果是这样,是否只包含一个基本上是“类型”的列,说明 FeedEntry 是什么子类?
3)如果没有,对 DRYest 方法有什么建议吗?

谢谢!

【问题讨论】:

    标签: ruby-on-rails design-patterns inheritance rss factory-pattern


    【解决方案1】:

    我认为您可以使用 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 。我不确定这是否是最干的方法。看看其他人怎么说会很有趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 2021-03-02
      • 2018-07-27
      相关资源
      最近更新 更多