ruby-on-rails – 如何查找未通过新验证的旧记录?
发布时间:2020-12-17 03:04:38 所属栏目:百科 来源:网络整理
导读:我最近在Rails应用程序中发现了与连接表中的重复条目相关的问题.该应用程序是教育性的,包括学生和练习模型.连接表记录了哪些学生分配了哪些练习.将练习多次分配给学生是没有意义的(即不应允许连接表中的重复条目). 我通过在连接表中添加唯一性验证来部分修复
我最近在Rails应用程序中发现了与连接表中的重复条目相关的问题.该应用程序是教育性的,包括学生和练习模型.连接表记录了哪些学生分配了哪些练习.将练习多次分配给学生是没有意义的(即不应允许连接表中的重复条目).
我通过在连接表中添加唯一性验证来部分修复问题(参见下面的最后一行代码).此验证将防止将来创建任何新的重复条目.但是,我仍然面临着解决表中现有重复项的问题. 有没有办法对整个现有数据库运行新验证,以检索不再有效的所有记录? class Student < ActiveRecord::Base has_many :student_exercise_assignments has_many :exercises,:through => :student_exercise_assignments end class Exercise < ActiveRecord::Base has_many :student_exercise_assignments has_many :students,:through => :student_exercise_assignments end class StudentExerciseAssignment < ActiveRecord::Base belongs_to :student belongs_to :exercise validates :exercise_id,:uniqueness => { :scope => :student_id,:message => "An exercise can only be assigned to a student once" } UPDATE Shioyama在下面的回答给出了我正在寻找的信息.然而,作为一个Rails新手,我对他的使用感到有些困惑.在&:无效?如果有人需要& amp;的引物Ruby中的运算符,有一个很好的here. 解决方法
怎么样:
invalid_assignments = StudentExerciseAssignment.select(&:invalid?) 这将选择在使用 作为旁注,我还建议为数据库添加唯一性约束.请参阅此答案,原因如下:Rails: Validation in model vs migration (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |