我正在创建一个学生注册系统,我遇到了问题。我想确保学生不能注册已关闭的课程,问题是:我如何检查是否为我的课程创建了新的学生关系?这是我的验证:
class Course < ActiveRecord::Base
has_and_belongs_to_many :students, class_name: 'User', join_table: 'following_classes_students'
validate :cannot_enroll_old_course
def cannot_enroll_old_course
if end_enrollments <= Date.today && self.students.last.new_record?
errors.add(:base, 'Cannot enroll a closed course')
end
end
end
class User < ActiveRecord::Base
has_and_belongs_to_many :following_classes, class_name: 'Course', join_table: 'following_classes_students'
end
当然学生不是新纪录吗?所以这段代码不起作用。我需要的是像new_child这样的东西?什么的。
答案 0 :(得分:1)
我猜您还有一个注册模型,您可以从EnrollmentController处理注册。因此,当您保存注册时,您了解学生和课程。在此模型中,您将检查课程是否仍然可以注册。您可以通过创建包含需求的关系来完成此操作。
使用以下代码生成此模型:
var myProp = {
name: name,
gender: gender,
age: age,
}
$('#nav li').on('click', function() {
myProp.name = "John";
myProp.gender = "Male";
myProp.age = "Nine";
});
rails g model Enrollment student:references course:references
并在您的课程模型中添加一个acitve列或方法:
class Enrollment
belongs_to :student
belongs_to :course
validate :valid_course
def valid_course
self.course.active
end
end