5

Eğer sıradan bir modele bu akışları tasarrufu sonra aşağı çekerek farklı kaynaklardan çok beslemeleri ve olacak bir site ile çalışıyorum Fabrika desen, ve kendini ayrıştırma, içinde Bu dava bir özellik. Feedentry sınıf içinde kodun bir örneği olabilir:Modeli kalıtım, Yakut-on-Raylar

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 

Kuşkusuz bir java alt yapıdan gelir ve burada java, ben bir miras hiyerarşi kuracak ve ardından feedentry her alt sınıf üzerinde uzatmak Ayrıştırma yöntemi böylece her FeedEntry kendini nasıl ayrıştırılacağını biliyordu. Sorularım:
1) Bu raylarda uygun bir plan mı?
2) Öyleyse, temelde FeedEntry alt sınıfının ne olduğunu söyleyen temelde "tip" olan bir sütun içermeli?
3) Yapmıyorsanız, bunu yapmak için En Hızlı Yoluyla ilgili herhangi bir öneriniz var mı?

Teşekkürler!

cevap

2

Sanırım rayların sağladığı Tekli tablo kalıtımını kullanabilirsiniz. Bakınız: http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/ ve http://api.rubyonrails.org/classes/ActiveRecord/Base.html.

Bundan sonra "devralınan" sınıflarınızın her birinde ayrıştırma yöntemini ekleyebilirsiniz. Bir before_save geri arama eklemek ve self.parse çağırmak isteyebilirsiniz. Bunu yapmanın en doğru yolu olup olmadığından emin değilim. Başkalarının ne söylediğini görmek ilginç olurdu.