A Course has many Lessons, and they are chosen by the user with a JS drag-n-drop widget which is working fine.
Here’s the relevant part of the params when I choose two lessons:
Parameters: {
"course_lessons_attributes"=>[
{"lesson_id"=>"43", "episode"=>"1"},
{"lesson_id"=>"44", "episode"=>"2"}
]
}
I want to perform some validations on the @course and it’s new set of lessons, including how many there are, the sum of the lessons’ prices and other stuff. Here’s a sample:
Course Model
validate :contains_lessons
def contains_lessons
errors[:course] << 'must have at least one lesson' unless lessons.any?
end
My problem is that the associations between the course and the lessons are not yet built before the course is saved, and that’s when I want to call upon them for my validations (using course.lessons).
What’s the correct way to be performing custom validations that rely on associations?
Thanks.
You can’t access the
course.lessons, but thecourse_lessonsare there, so I ended up doing something like this in the validation method to get access to the array of lessons.I’m still open to there being a better way to do this.