基于属性

时间:2016-03-25 16:00:39

标签: ruby-on-rails ruby-on-rails-4 associations primary-key limit

正如您在下面的架构中所看到的,用户可以通过course_completion创建课程并为其提交时间和视频(如youtube)。
我想做的是将用户,特定课程的课程完成限制为1,并根据属性" pov" (观点)
例如,高尔夫球场"高海拔比赛"用户只能使用pov = true和/或pov = false的一个course_completion 这意味着在创建课程完成时我必须检查它是否已经存在,并且在更新时我还必须检查它并销毁之前的记录(或更新它)。

我不知道我是否清楚自己想做什么,可能是因为我不知道如何使用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

1 个答案:

答案 0 :(得分: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
相关问题