2016-07-11 20 views
1

Ich möchte überprüfen, ob der Zeitrahmen bei einer Dokumentaktualisierung mit einem anderen überschneidet. Es funktioniert bei der Erstellung, aber ich habe Probleme, etwas zu ändern.Mongoid check Schnittbilder auf Dokumentaktualisierung

Dies ist, was ich bisher:

if Timetracking.where(:begin.lt => params[:timetracking][:end], :end.gt => params[:timetracking][:begin]) && Timetracking.find(params[:id]) != params[:id] 
    @error = 'Time overlapping with another entry' 
    render 'timetracking/edit' 
else 
    do update stuff 
end 

Meine Grundidee, wenn die Zeit zu überprüfen war überlappt und wenn die ID ist etwas anderes als das bin ich zu aktualisieren. Ich habe auch eine andere Abfrage ohne Erfolg versucht:

if Timetracking.where(:begin.lt => params[:timetracking][:end], :end.gt => params[:timetracking][:begin], :id.ne => params[:id]) 
    @error = 'Time overlapping with another entry' 
    render 'timetracking/edit' 
else 
    do stuff 
end 

Jetzt bin ich ein bisschen fest. Vielleicht könnte mich jemand in die richtige Richtung drängen. :) Oh, und ich benutze Padrino.

Vielen Dank.

Antwort

0

Ich denke, dass Sie möglicherweise einen Fehler in Ihrer Logik haben. Ihr Code testet, ob das neue TimeTracking innerhalb von ein vorhandenes ist, nicht ob es sich überschneidet.

So, Sie haben 2 Möglichkeiten. Ich denke, Sie werden eine oder Erklärung benötigen:

  1. Es beginnt zwischen einer anderen Zeiterfassung des begin und endoder
  2. Es zwischen einer anderen Zeiterfassung endet begin und end

Auch ich schlage vor, Sie schreibe ein paar Angaben. Es würde es viel einfacher machen zu sehen, was vor sich geht.

Folgendes ist nicht korrekt. Es wird immer falsch sein:

Timetracking.find(params[:id]) != params[:id] 

Sie wollen so etwas wie:

Timetracking.where(:begin.lt ..., :id.ne => params[:id]) 
+0

Thank you very much. Ich habe das Problem jetzt mit einer OR-Anweisung gelöst. Jetzt funktioniert es wie erwartet. EDIT: Sieht aus wie ich bin zu dumm, um in Kommentaren zu formatieren. :) – BlindPenguin