Course
有很多Lessons
,用户可以使用JS拖放小部件来选择它们。
当我选择两节课时,这是参数的相关部分:
Parameters: {
"course_lessons_attributes"=>[
{"lesson_id"=>"43", "episode"=>"1"},
{"lesson_id"=>"44", "episode"=>"2"}
]
}
我想对@course
进行一些验证,这是一套新课程,包括课程数量,课程价格和其他内容的总和。这是一个示例:
课程模型
validate :contains_lessons
def contains_lessons
errors[:course] << 'must have at least one lesson' unless lessons.any?
end
我的问题是课程和课程之间的关联尚未在课程保存之前建立起来,而且我想要他们进行验证(使用course.lessons
)。
执行依赖关联的自定义验证的正确方法是什么?
感谢。
答案 0 :(得分:2)
看起来你不需要在这里进行自定义验证,请考虑使用这个:
validates :lessons, :presence => true
或
validates :lessons, :presence => {:on => :create}
答案 1 :(得分:0)
您无法访问course.lessons
,但course_lessons
已存在,所以我最终在验证方法中执行了类似的操作,以便访问课程数组。
def custom validation
val_lessons = Lesson.find(course_lessons.map(&:lesson_id))
# ...
# check some things about the associated lessons and add errors
# ...
end
我仍然愿意接受更好的方法。