j'ai les suivantes créer une action:Comment affecter le contenu d'un modèle à un autre dans Rails?
def create
@order = Order.new(params[:order])
if params[:same_as_above] == "1"
@order.billing_address.name = @order.shipping_address.name
@order.billing_address.number = @order.shipping_address.number
@order.billing_address.street = @order.shipping_address.town
end
if @order.save
if @order.purchase
render :action => "success"
else
render :action => "failure"
end
else
render :action => 'new'
end
end
Il fonctionne, mais il semble un peu lourd et fragile de la façon dont je copie l'adresse de livraison à l'adresse de facturation, attribut par attribut. Y a-t-il un meilleur moyen s'il vous plait?
ActiveRecord :: AssociationTypeMismatch à CommandesController # créer billingAddress (# 18825000) prévu, obtenu ShippingAddress (# 18874550) – pingu
C'est essentiellement ce que je voulais dire par les modèles ne sont pas mis en place correctement .... Pourquoi deux ensembles de classes et tables pour 'Address' - pourquoi à la fois' ShippingAddress' et 'BillingAddress'? – yfeldblum
Parce que les données d'une table seront conservées, tandis que l'autre sera effacée régulièrement. C'est pourquoi j'ai la séparation. – pingu