0

正如您在下面的模式中所看到的,用戶可以通過course_completion創建課程並提交時間和視頻(如youtube)。
我想要做的是限制爲1課程完成的用戶,給定的課程,並基於屬性「pov」(觀點)
例如,對於「高海拔賽跑」課程的用戶只能有一個course_completion與pov = true和/或一個與pov = false
這意味着當創建課程完成時,我必須檢查它是否已經存在與否,當更新時,我也必須檢查它並銷燬以前的記錄(或更新它)。基於屬性的rails關聯限制記錄

我不知道我是否足夠清楚自己想做什麼,這可能是因爲我不知道如何正確使用rails 4來完成它(除非使用大量的代碼行avec無用的檢查) 。 我正在考慮將所有內容都放在一個course_completion(normal_time,pov_time,normal_video,pov_video)中,但我不太喜歡這個想法:/

有人可以幫助我嗎?
感謝您的幫助!

這裏是我的課:

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 

回答

0

你可以使用驗證唯一性作用域Rails - Validations

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 
相關問題