Ich weiß, das muss einfach sein, aber ich bin wirklich verloren.Schienen 4 - Summenwerte nach externem Schlüssel gruppiert
Drei Modelle: Job, Aufgabe und Funktion, wie folgt:
Job
has_many :tasks
Task
belongs_to :job
belongs_to :operation
Operation
has_many :jobs
Job
hat ein Attribut, total_pieces
, die mir sagt, wie viele Stücke, die Sie benötigen. Für jede Job
können Sie eine Nummer Tasks
hinzufügen, die zu verschiedenen Operations
(Schneiden, Bohren, etc.) gehören kann und für jede Aufgabe können Sie eine Anzahl von Stücken einrichten. Ich weiß nicht im Voraus, wie viele Operations
wird für eine einzige Job
benötigt, aber ich muss Benutzer über die Anzahl der Stücke für diese Operation
verlassen, wenn eine neue Task
eingefügt wird.
Nehmen wir ein Beispiel machen:
Job 1: total_pieces=100
- Task 1: operation 1(cutting), pieces=20
- Task 2: operation 1(cutting), pieces=30
- Task 3: operation 2(drilling), pieces=20
Ich brauche den Benutzer zu alarmieren, die sie benötigen noch 50 Stücke schneiden und 80. Hypothetisch zu bohren, wenn ich hinzufügen:
- Task 4: operation 3(bending), pieces=20
Ich muss den Benutzer darauf aufmerksam machen, dass sie auch noch 80 Stücke biegen müssen.
Bisher habe ich es geschafft, alle Arten von Operations
für jede Job
zur Liste map
verwenden, aber jetzt brauche ich alle Teile des Task
mit dem gleichen Operation
Typ in einem Job
zusammenzufassen, und nur für jene Operations
in die Tasks
gehört dazu Job
.
Gibt es eine Möglichkeit, dies unter Verwendung map
zu tun? Oder muss ich eine Abfrage manuell schreiben?
EDIT: das ist es, was ich im Moment gepatched habe.
Verfahren operations_applied
in Job gibt mir eine Liste von IDs für alle Operations
USEND in Tasks
für die Job
Warteschlange.
Dann gibt mir eine andere Methode, pieces_remaining for(operation)
gibt mir die restlichen Stücke für die einzelne operation
.
Schließlich in der Job
Ansichten, die ich brauche, ich Iterate durch alle operations_applied
Drucken alle pieces_remaining_for
.
Ich weiß, das ist nicht besonders elegant, aber bisher funktioniert es, irgendwelche Ideen, um das zu verbessern? Danke.
Danke, das ist viel besser als meine gepatchte Lösung! –