Rails 2.3.5, Rubis 1.8.7.Rails emboîtés avec condition d'unicité
J'ai trois modèles, Person, AcademicTerm et 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
}
Dans une forme imbriquée dynamique pour un enregistrement de personne, j'autorise l'édition des person_term_statuses. Mais j'obtiens des erreurs de validation si l'utilisateur effectue l'une des actions suivantes:
- Supprime un statut et en crée un nouveau avec le même terme académique dans la même modification.
- Échange les termes académiques entre deux statuts existants.
Je comprends pourquoi cela se produit. Dans (1), l'état marqué pour la suppression n'est pas réellement supprimé avant la validation de la condition d'unicité du nouveau statut. Dans (2), la condition d'unicité est à nouveau appliquée avant tout changement, et elle trouve un autre enregistrement avec le même academic_term.
Le problème est, je ne peux pas trouver un moyen de contourner cela. Y a-t-il une solution connue?
(Ma imbriqué forme implmenetation est d'utiliser currrently à peu près la technique exactement de Railscast [Part I et Part II)