2016-04-19 13 views
0

Ich habe das Modell Order mit 2 Zuordnung zu Address.Duplizieren eines Eintrags in einer Beziehung in Rails 4

class Order < ActiveRecord::Base 

    belongs_to :billing, class_name: 'Address', foreign_key: 'billing_address_id', autosave: true 
    belongs_to :shipping, class_name: 'Address', foreign_key: 'shipping_address_id', autosave: true 

Normalerweise, wenn beide Adressen gleich sind, würden Sie beide Verbände haben auf denselben Datensatz zeigen, aber lassen Sie uns für einen Moment sagen, dass ich 2 Einträge auf dem Tisch Address machen wollte. Wie würde ich das tun?

ich es auf diese Weise versucht, aber es scheint nicht ...

@order.build_shipping shipping_params 
@order.shipping.do_this() 
@order.shipping.do_that() 

@order.billing = @order.shipping.dup 
@order.save 

zu arbeiten Wie kann ich das erreichen?

Antwort

0

Da beide Verbände auf die gleiche Klasse verweisen, würde das nicht für Ihren Fall funktionieren?

@order.build_billing(shipping_params) 
+0

Ich müsste "do_this" und "do_that" für die Abrechnung wiederholen. Ich würde gerne diese Redundanz beseitigen. –

+0

Ändert diese Methode die Attribute "Abrechnung/Versand"? Brauchst du auch ihre IDs? –

+0

Ja, sie verändern sie. Nein, ich brauche sie nicht –