2017-04-22 3 views
1

Ich versuche, Kunden Order platzieren und wenn sie eine Order platzieren wird es eine status: uncompleted in der Order Datenbank Eintrag haben.Modell Beziehungen für Arbeitnehmer/Jobs/Aufträge alle synchron arbeiten

Eine Worker kann eine dieser Order s anfordern und eine Job beginnen. Wenn die Worker die Order genommen und machte es zu einem Job Ich versuche, den Order Status status: inprogress und den Job Status status: inprogress und dann zu machen, wenn die Worker die Job der Order abgeschlossen Status sollte status: completed und die Job Status status: completed sein.

Ich frage mich, ob ich mein Modell Beziehungen die richtige Art und Weise eingerichtet haben zu können, den status von Order und Job ändern, wenn ein Worker ein Job innerhalb einer PostgreSQL-Datenbank erstellt.

Meine Modelle sind wie so ein:

worker.rb

devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 

has_many :jobs 

order.rb

belongs_to :job 

job.rb

belongs_to :worker 
has_one :worker 
+0

Ein 'Job'' gehört_zu: worker' statt 'user', weil es in dieser Frage kein 'User'-Modell gibt. Möglicherweise müssen Sie dies auch in der Datenbank ändern. – spickermann

+0

@spickermann danke, dass du darauf hingewiesen hast! Ich habe es für die Klarheit in der Frage – Jack

Antwort

0

Sie können eine solche erreichen Funktionalität mit sql triggers oder ActiveRecord callbacks. Insbesondere after_update callback. Die Idee ist, wenn Sie einen Datensatz aktualisieren, wird Code ausgeführt.

Oder Sie können State Machine Edelsteine ​​für die Verwaltung Ihrer Status verwenden. AASM gem zum Beispiel hat Callbacks eingebaut, die ausgeführt werden, wenn sich der Status ändert.

+0

von Benutzer zu Arbeiter geändert. Aber denkst du, dass ich meine Modellbeziehungen korrekt eingerichtet habe? – Jack

Verwandte Themen