Наследование моделей, шаблон Factory и саманализ в Ruby-on-Rails - PullRequest
5 голосов
/ 22 февраля 2010

Я работаю с сайтом, который будет извлекать фиды из множества разных источников, а затем сохранять эти потоки в общую модель, в данном случае это черта.Пример кода из класса 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расширить метод разбора, чтобы каждый FeedEntry знал, как разбирать себя.Итак, мои вопросы:
1) Это выполнимый план в рельсах?
2) Если это так, можно ли было бы просто включить столбец, который в основном был "type", в котором говорилось, что подкласс FeedEntry был?Если нет, то какие-либо предложения по СУЩЕСТВЕННОМУ способу сделать это?

Спасибо!

1 Ответ

2 голосов
/ 22 февраля 2010

Я думаю, что вы можете использовать наследование одной таблицы, предоставляемое 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. Я не уверен, что это самый СУЩЕСТВЕННЫЙ способ сделать это ... было бы интересно посмотреть, что говорят другие.

...