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)そうでない場合、これを行うための最も乾燥した方法に関する提案はありますか?

ありがとう!

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 に答える