我有3个嵌套模型
我有一个名为' student_number'在学生模型中。我想让它相对于课程(第一个父母)而言是独一无二的。每个单一课程不允许使用重复的student_numbers。
我写了一个 -
验证:student_number,presence:true,数字性:{only_integer:true},唯一性:{scope :: company_id}
但它仅适用于公司(第二家长),如果同时添加2名学生,此验证也无效。
请帮帮我。
答案 0 :(得分:0)
#app/models/student.rb
...
validates :student_number, presence: true, numericality: { only_integer: true }, uniqueness: { scope: :course_id }
def course_id
company.course.id
end
当然,这将对每个课程进行查找。因此,在大型系统上不会表现得非常好。
您可以重新组织数据库结构,以便学生直接参加课程,如果这更有意义,公司作为不同的父母。或者,如果事情变慢,你可以在学生表上放置课程id的缓存。
或者你可以写一个自定义验证器,如果你可以使它更高性能:
http://guides.rubyonrails.org/active_record_validations.html#custom-methods