0

以下のスキーマからわかるように、ユーザーはcourse_completionを使用してコースを作成し、時間とビデオ(YouTubeなど)を送信できます。
私がしたいのは、ユーザー、与えられたコース、および属性 "pov"(視点)に基づいてコースの補完を1に制限することです。
たとえば、 "高高度レース"コースpov = trueおよび/またはpov = falseを持つcourse_completionを1つだけ持つことができます
コースの完了を作成すると、すでに存在するかどうかをチェックする必要があります。また、更新する際にもそれをチェックして前のレコードを破棄する必要があります(または更新する)。属性に基づくレール関連制限レコード

私は私が何をしたいのかについて十分に明確だ場合、私は(無用チェックAVECコードの行のトンを使用していない限り)、レール4とそれを正しく行う方法が分からないので、それはかもしれ分かりません。 私はすべてを1つの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 
関連する問題