Rails:验证一组id

时间:2016-06-06 15:05:20

标签: ruby-on-rails ruby validation activerecord

应用

我正在建立一个大学招生系统,学生可以申请最多5门课程。我设计这个的方法是拥有 Application 模型和 CourseApplication 模型。应用程序可以包含许多course_applications:

class Application < ActiveRecord::Base

  # Assosciations
  belongs_to :user
  has_many :course_applications, dependent: :destroy
  has_many :courses, through: :course_applications
  has_one :reference

  # Validations
  validates :course_applications, presence: true

end

课程申请

class CourseApplication < ActiveRecord::Base

  # Intersection entity between course and application.
  # Represents an application to a particular course, has an optional offer

  # Associations
  belongs_to :application
  belongs_to :course
  has_one :offer, dependent: :destroy

end

我想确保学生不能两次申请同一门课程。我已经做过一些研究但没有成功。这是制作申请的学生的用户界面:

Screenshot of application form

选择课程后,课程ID将添加到课程ID数组中:

def application_params
  params.require(:application).permit(:user, course_ids: [])
end

现在学生可以选择两次相同的课程,我想阻止他们这样做。任何帮助深表感谢。

1 个答案:

答案 0 :(得分:0)

对于rails侧,我会在data_sets.train = ScrollData(train_images, train_labels, dtype=tf.float32) TypeError: object() takes no parameters

上进行
CourseApplication

供您参考,可在以下网址找到:http://guides.rubyonrails.org/active_record_validations.html#uniqueness

还建议在数据库端进行迁移

validates :course, uniqueness: { scope: :application }

对于表单上的验证,您必须编写javascript以确保选择了两个内容,这只会在有人尝试执行时返回错误。