Rails:验证是否存在新关系

时间:2015-11-19 10:37:26

标签: ruby-on-rails

我正在创建一个学生注册系统,我遇到了问题。我想确保学生不能注册已关闭的课程,问题是:我如何检查是否为我的课程创建了新的学生关系?这是我的验证:

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这样的东西?什么的。

1 个答案:

答案 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