0

Wie Sie im unten stehenden Schema sehen können, kann ein Benutzer Kurse erstellen und über course_completion eine Zeit und ein Video (wie youtube) dafür einreichen.
Was ich tun möchte, ist es, eine Kursvervollständigung für einen Benutzer, einen bestimmten Kurs und basierend auf dem Attribut "pov" (Sicht)
zu begrenzen. Zum Beispiel für den Kurs "Höhenlauf" ein Benutzer kann nur eine course_completion mit pov = true und/oder eine mit pov = false haben Das bedeutet, dass ich beim Erstellen der Kursvervollständigung prüfen muss, ob es bereits existiert oder nicht, und beim Update muss ich es auch überprüfen und den vorherigen Datensatz zerstören (oder aktualisieren Sie es).Schienenverbindungsbegrenzungsdatensatz basierend auf einem Attribut

Ich weiß nicht, ob ich klar genug bin, was ich tun möchte, vielleicht weil ich keine Ahnung habe, wie man es richtig mit Schienen 4 macht (außer Tonnen von Codezeilen mit nutzlosen Überprüfungen) . Ich dachte daran, alles in nur eine course_completion (normal_time, pov_time, normal_video, pov_video) zu setzen, aber ich mag die Idee nicht:/

Kann mir jemand dabei helfen?
Danke für jede Hilfe!

Hier sind meine Klassen:

class CourseCompletion < ActiveRecord::Base 
    belongs_to :course 
    belongs_to :user 
    belongs_to :video_info 

    # attribute pov 
    # attribute time 
end 

class Course < ActiveRecord::Base 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :courses 
    has_many :course_completions 
end 

Antwort

0

Sie validiert Einzigartigkeit mit Scoping Rails - Validations nutzen könnten.

class CourseCompletion < ActiveRecord::Base 
    belongs_to :course 
    belongs_to :user 
    belongs_to :video_info 

    validates :course, uniqueness: { scope: :pov, message: "only one course per pov" } 

    # attribute pov 
    # attribute time 
end 
Verwandte Themen