Rails 2.3.5,Ruby 1.8.7。
我有三个模型,Person,AcademicTerm和PersonTermStatus。
class PersonTermStatus {
belongs_to :academic_term
belongs_to :person
validates_uniquness_of :academic_term_id, :scope => :person_id
@ ...
}
class Person {
has_many :person_term_statuses
}
在Person记录的动态嵌套表单中,我允许编辑person_term_statuses。但是如果用户执行以下任一操作,我会收到验证错误:
答案 0 :(得分:0)
我知道没有解决方法。但是,您可以向数据库添加外键以强制数据库端的唯一性,然后使用以下方法。
将一个before_validation添加到父模型中,删除并重新创建所有子项的新记录。然后添加一个自定义验证函数,根据内存中的内容(而不是数据库中的内容)手动检查子记录的唯一性。
这种方法的缺点包括: