2012-07-24 53 views
0

我找諮詢如何做一些事情我一直想在過去做了很多次,這使我相信,有一種設計模式(可能寶石,或例如)如何做到我想要達到的目標。映射ActiveRecord對象來創建新的對象

我目前在Rails上工作,涉及一個涉及多種訂單類型的項目。例如,我有一個需要生成貨件的基本訂單。訂單中的數據需要「映射」到新創建的貨件。 (很簡單的例子:)

Order
- 來自:紐約
- 到:LA
- SHIPPING_TYPE:聯邦快遞

Shipment
- 來自:LA
- 到:紐約
- SHIPPING_TYPE:聯邦快遞

秩序出貨將有幾乎相同的領域,對未成年人的區別之一是,「」和「」域切換。在現實世界中,這些對象中的每一個都有更多的領域。還有許多其他類型的訂單需要「地圖」。

在試圖讓事情DRY興趣,有沒有一種方法來創建這些命令之間的映射,這樣我就可以最大限度地減少的時候,我會寫一個generate_order_from(order)方法是多少?

編輯:我試圖創建一個類似RestKit's Object Mapping的方法。我在Ruby中找不到類似的東西。

回答

0

訂單和出貨將具有幾乎相同的字段......在現實世界中,這些對象中的每一個都有許多許多字段。

也許這是你的問題?如果您有很多字段,並且其中大部分字段在訂單和貨件中都是相同的,則應該將公共字段放入由訂單和貨件共享的單獨對象中(在數據庫中,這相當於將您的標準化表)。然後,您只需映射實際更改的字段(如切換fromto字段)。

+0

謝謝,卡薩布蘭卡。我將所有共享字段都拉到另一個名爲「Order」的對象中,該對象由數據庫支持。然而,項目需求需要全面審計,這消除了不同訂單共享相同基礎對象的能力,因爲採購訂單可能會生成多個貨件。我試圖創建一個類似於[RestKit的對象映射]的方法(https://github.com/RestKit/RestKit/blob/master/Docs/Object%20Mapping.md)。 – Semyaz 2012-07-25 13:26:29