2010-05-10 18 views
5

XML isteğini aktif bir kayıt nesnesine dönüştürmeyi ve XML isteğini göndermeyi denemek için bir süredir uğraştım. ActiveRecordObject.new.from_xml yöntemini kullanarak denedim ancak ilişkileri işlemek için görünmüyor.rayları etkin kayıt nesnesine xml

<blog> 
    <title></title> 
    <blog-pages> 
    <blog-page> 
     <page-number></page-number> 
     <content></content> 
    </blog-page> 
    </blog-pages> 
</blog> 

Ve şu modeli nesneler var:

class Blog < ActiveRecord::Base 
    has_many :blog_pages 

end 

class BlogPage < ActiveRecord::Base 
    belongs_to :blog 

end 

ilişkiler İLE bir blog nesnesine xml dönüştürmek için bir yolu var mı Örneğin

, aşağıdaki xml söylüyorlar ? Ya da XML'yi manuel olarak ayrıştırmam gerekiyor mu?

Şimdiden teşekkürler.

cevap

1

Bir süre buna karşı başımı çarptım. ActiveRecord nesnelerini el ile yapmadan XML ile eşlemek için orada pek bir şey yok gibi görünüyor. İhtiyaçlarımınkiyle benzer olsa da, ilişkilerle sadece bir nesneyi yapmam gerekiyordu, bir çok şey yapmam gerekiyordu. Bir çok yere baktım ve bir şey bulamadım. Çözmemeye karar verdim ama bir tek liner olmayacağını fark etti, bu yüzden ActiveRecord'u genişleten bir mücevher yazdı.

http://www.wayne-robinson.com/journal/2006/5/1/ruby-on-rails-activerecordbuild_from_xml-function.html

benim olmayan var boş zamanlarında benim mücevher bitmiş ve rubygems de kontrol edebilirsiniz içinde birkaç ay sonra:: Bu yardımcı olur https://rubygems.org/gems/xml_active

Hope Wayne Robinson tarafından çalışmalarına dayalı:) Şerefe,

Michael

GÜNCELLEME

xml_active şimdi resmen emekli oldu ve geliştirme artık xml_active işlevine sahip ancak gelecekteki sürümlerde data_active (bkz. https://github.com/michael-harrison/data_active) üzerine odaklanmıştır. Diğer formatları desteklemek için çalışacağım

+0

Sadece hızlı bir ... Ne yaptın? işi wayne ile genişletmek mi? – baash05

+0

@daveatflow, xml_active (şimdi data_active), Wayne'in model bağımlılıklarını gözden geçirip daha sonra nesne belleği oluşturmaya yönelik eserine dayanıyordu. Gem, yeni nesneleri veritabanına vermenin bir sonraki adımını atıyor. Ayrıca Wayne'in çalışmasının sadece has_many derneklerini işlediği has_one dernekleri için destek sağlıyor. Kısacası, çalışmalarım bana sadece kendi kaşımı çizmemek için değil aynı zamanda başkalarına yardım etmesini de sağlamak için bana ilham verdi. Ben sadece ona kudos verdiğimi uyduruyorum;) –

İlgili konular