映射ActiveRecord对象以创建新对象

时间:2012-07-24 22:01:32

标签: ruby-on-rails-3 oop

我正在寻找有关如何做我过去想做多次的事情的建议,这让我相信有一种设计模式(可能是一个宝石,或者例子)如何做到我想实现。

我目前正在 Rails 中处理涉及多种订单类型的项目。例如,我有一个需要生成货件的基本订单。订单中的数据需要"映射" 到新创建的货件。 (非常简短的例子:)

  

Order
   - 来自:纽约市    - 到:LA
   - shipping_type:FedEx

     

Shipment
   - 来自:LA
   - 到:纽约市    - shipping_type:FedEx

订单货件将具有几乎相同的字段,其中一个细微差别是来自&#34的" ;和" "字段切换。在现实世界中,这些对象中的每一个都有许多更多的字段。还有许多其他类型的订单需要具有" 地图"。

为了尝试保存 DRY ,有没有办法在这些订单之间创建地图,这样我就可以尽量减少写generate_order_from(order)的次数方法?

编辑:我正在尝试创建一个类似于RestKit's Object Mapping的方法。我在Ruby中找不到类似的东西。

1 个答案:

答案 0 :(得分:0)

  

订单和发货将具有几乎相同的字段......在现实世界中,每个对象都有许多更多的字段。

也许这是你的问题?如果您有这么多字段,并且大多数字段在订单和发货中都是相同的,您应该将公共字段拉到一个单独的对象中,该对象由订单和货件共享(在数据库中,这相当于规范化您的表)。然后,您只需映射实际更改的字段(例如切换fromto字段。)