Ich fange an, eine Anwendung zu erstellen, die Produkte, einen Einkaufswagen und Zahlungen enthält. Sie beginnen mit dem Hinzufügen des Produkts zu Ihrem Warenkorb, indem Sie zu/products gehen. Wenn Sie dann zu/cart navigieren, füllt das System Ihre Liste der Produkte aus, die zur Kasse bereit sind. Es ist geplant, das Attribut "Gesamtpreis" innerhalb der Warenkorb-Tabelle in die Zahlungstabelle zu verknüpfen.Verbinden eines Einkaufswagen-Attributs "Gesamtpreis" mit einer Zahlungskonfiguration
Wie gehe ich vor, um zwei Attribute aus separaten Tabellen zu verknüpfen, um sie gleich zu machen? Ich habe die zwei Attribute markiert, die gleich sein müssen, "Gesamtpreis" und "Betrag".
create_payments.rb
class CreatePayments < ActiveRecord::Migration
def change
create_table :payments do |t|
t.string :first_name
t.string :last_name
t.string :last4
***t.decimal :amount, precision: 12, scale: 3***
t.boolean :success
t.string :authorization_code
t.timestamps null: false
end
end
end
create_order_items.rb
class CreateOrderItems < ActiveRecord::Migration
def change
create_table :order_items do |t|
t.references :product, index: true, foreign_key: true
t.references :order, index: true, foreign_key: true
t.decimal :unit_price, precision: 12, scale: 3
t.integer :quantity
***t.decimal :total_price, precision: 12, scale: 3***
t.timestamps null: false
end
end
end
Bitte lassen Sie mich wissen, ob noch weitere Dateien benötigt werden, um das Problem zu beheben. Vielen Dank im Voraus für jede Art von Hilfe!
was genau meinst du damit? – Minato
Ich möchte grundsätzlich das Attribut "Betrag" aus der Zahlungstabelle durch das Attribut "total_price" aus der Tabelle order_items ersetzen. Wenn ein Nutzer eine Zahlung tätigt, füllt er den geschuldeten Betrag basierend auf dem gekauften Produkt aus. – nomad
Ich denke, Sie müssen einen "gehört" Bezug auf Ihre "Bestellung" innerhalb Ihrer "Zahlungen" und eine "has_one" innerhalb Ihrer Zahlung haben. Auf diese Weise können Sie einfach den Preis aller 'OrderItems 'abfragen und das' quantity' Attribut wie folgt auffüllen. 'payment.amount = payment.order.order_items.select (" total_price "). reduce (&: +)' – Minato