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方法的任何建议吗?
谢谢!
我认为你可以使用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 。我不确定这是否是最干燥的方法..看看其他人怎么说会很有趣。