Ich habe folgende ModelleActiveverbände Speicher, die zueinander zeigen, auf einmal
class Cargo < ApplicationRecord
has_many :destinations
has_many :assignments
accepts_nested_attributes_for :destinations
accepts_nested_attributes_for :assignments
end
class Destination < ApplicationRecord
has_one :assignment_coming_to_me, class_name: 'Assignment', foreign_key: 'arrive_destination_id'
has_one :assignment_leaving_me, class_name: 'Assignment', foreign_key: 'start_destination_id'
end
class Assignment < ApplicationRecord
belongs_to :start_from, class_name: 'Destination', foreign_key: 'start_destination_id'
belongs_to :arrive_at, class_name: 'Destination', foreign_key: 'arrive_destination_id'
end
ein visuelles Bild Geben, es ist so etwas wie diese
+-------------+
+---| Destination |
| +-------------+---+ <= start_from
| | +------------+
| +---| Assignment |
| | +------------+
+-------+ | +-------------+---+ <= arrive_at
| Cargo | --+---| Destination |
+-------+ | +-------------+---+ <= start_from
| | +------------+
| +---| Assignment |
| | +------------+
| +-------------+---+ <= arrive_at
+---| Destination |
| +-------------+---+
| |
. .
. .
Nun ist es eine Möglichkeit, Erstellen Sie die gesamten Datensätze auf einmal, angesichts der Parameter wie folgt? (Angenommen, die Ziele und Aufgaben sind miteinander verbunden sind ebenso wie die Reihenfolge der Parameter-Array)
{
cargo: [
destinations_attributes: [{place_id: ..}, {place_id: ...}, ...],
assignments_attributes: [{assignee_id: ..}, {assignee_id: ...}, ...],
]
}
weiß ich Ziele zuerst, dann Speichern durch sie Iterieren Zuordnung der destination_ID einstellen kann die Arbeit erledigen, aber frage mich, ob es eine ist klügerer Weg.
erstellen Wenn ich Ihr Schema verstanden, wollen Sie etwas durch Ziel zu verfolgen. Ich denke, es gibt eine bessere Möglichkeit, Ihre Modellassoziationen anzuordnen. Könnte bitte Ihr Datenbankschema an diese drei Tabellen senden. –
@Pedro Assignmet hat start_destination_id und goal_destination_id, Destination hat cargo_id, das ist so ziemlich das Wesentliche – Ryo