【发布时间】:2016-06-06 15:05:20
【问题描述】:
应用
我正在开发一个大学招生系统,学生可以在该系统中申请最多 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
我想确保学生不能两次申请同一课程。我已经做了一些研究,但没有成功。这是学生申请的 UI:
Screenshot of application form
选择课程后,课程 ID 将添加到课程 ID 数组中:
def application_params
params.require(:application).permit(:user, course_ids: [])
end
现在一个学生可以选择两次相同的课程,我想阻止他们这样做。任何帮助深表感谢。
【问题讨论】:
-
您可以发送
ajax并获取第二选择中的所有元素,除了您在第一选择中已经选择的选项。 -
优先级重要吗?
-
感谢cmets,Ropeney的方案通过后端验证有效解决了问题。但是,我仍然要创建前端验证。目前表单只是重置而不显示适当的错误消息。非常感谢编写这些 javascript 验证的任何帮助
标签: ruby-on-rails ruby validation activerecord