2010-06-21 69 views
2

我正在實現一個使用Ruby on Rails處理XML文檔的應用程序。我想擁有封裝所有邏輯的模型,然後在保存時將它們轉換爲相應的XML文檔。雖然我不需要數據庫持久性,但我希望我的模型具有像ActiveRecord一樣的驗證機制。另外,爲了在XML和Ruby對象之間進行轉換,首選一個XML映射庫來使事情更輕鬆。Rails模型的XML映射和驗證

雖然有相當a few solutions使用ActiveRecord不表允許,在我看來,XML映射庫(例如ROXMLXML Mapping)似乎並不用ActiveRecord的田地發揮出色。換句話說,由於它們的語法衝突,它看起來並不像它們可以一起使用。

因此,我想知道在這種情況下首選解決方案是什麼。該解決方案允許使用具有驗證功能的無表模型的XML綁定庫。

例如,一種解決方案是有兩個獨立的模型。一個是無表ActiveRecord,另一個是帶有xml綁定的純Ruby對象(如this post中所述)。 ActiveRecord模型用於驗證。要將它們轉換爲XML,首先需要將其複製到XML綁定模型。雖然這個解決方案確實有效,但它並不優雅。

回答

0

我可能會讓問題看起來更加複雜,實際上是。基本上我想要的是ActiveRecord功能的子集(驗證,從哈希創建對象)和XML綁定。在這種情況下,使用標準的Ruby對象以及提供與ActiveRecord相當的功能的庫可能會更好。爲了驗證,validatable是合適的。從哈希創建對象也可以很容易地實現。

總之,Ruby類+ ROXML + validatable gem +自定義哈希對象實現是我的選擇。

0

你在說你不需要「數據庫持久性」,但是你說你想將它們保存到一個XML文件中,並從中讀取它們。所以你需要持久化 - 在一個文件上。這和「數據庫持久性」之間的區別僅僅是語言上的,因爲我們有SQLite,它將整個數據庫存儲在一個文件中。

你想要做的事可以通過執行your own adapter來完成。這並不複雜,但是需要一些時間。

+0

該應用程序操縱XML文檔,但我們不保存它們。我們向/從另一個Web服務發送/檢索文檔。我們的應用程序中不需要數據庫持久性。 – ejel 2010-06-22 16:54:11