Existe-t-il un moyen de valider qu'une association polymorphe est uniquement liée à un élément? par exemple, si j'ai des commentaires qui sont polymorphes et peuvent être sur des photos, des publications, etc. Je veux m'assurer que si j'ajoute un commentaire à une liste de commentaires, si le commentaire est déjà associé à la publication , l'ajout échouera. (erreur d'unicité de validation). Des idées?Validation d'association polymorphique?
3
A
Répondre
6
Je devine que vous avez quelque chose comme ceci:
class Comment < ActiveRecord::Base
belongs to commentable, :polymorphic => true
end
class Post < ActiveRecord::Base
has_many :comments, :as => commentable, :dependent => :destroy
end
class Photo < ActiveRecord::Base
has_many :comments, :as => commentable, :dependent => :destroy
end
En supposant que votre modèle Comment
a quelques attributs comme author
et body
(que vous voulez être unique), vous pouvez alors créer une validation personnalisée dans ce modèle comme celui-ci:
validate do |comment|
if comment.commentable_type.constantize.comments.find_by_author_and_body(comment.author, comment.body)
comment.errors.add_to_base "Duplicate comment added for ..."
end
end
J'ai aussi supposé que sont créés quelque chose comme commentaires ceci:
@post.comments.create(:author => name, :body => comment_text)
Questions connexes
- 1. forme de validation avec l'association polymorphique
- 2. question polymorphique assosciation
- 3. Comportement polymorphique dans VB6
- 4. Inscrivez-vous sur l'association polymorphique
- 5. Rails + Pensée-Sphinx association polymorphique
- 6. Rails changeant type polymorphique d'un objet
- 7. Rails polymorphique plusieurs à plusieurs association
- 8. Java JPA mappage polymorphique sur plusieurs à
- 9. Rails empêchant les doublons dans polymorphique has_many: through les associations
- 10. Comment Jpa Query.setParameter fonctionne avec MetaValue (requête polymorphique)?
- 11. Comment faire pour que Haskell calcule le type polymorphique correct?
- 12. Validation Javascript ou validation ASP?
- 13. Validation d'une expression de validation
- 14. L'association polymorphique n'enregistre pas le nom de classe (sans STI), aucun indice?
- 15. Comment créer des auto-relations dans l'héritage polymorphique dans Elixir et Pylons?
- 16. Comment puis-je obtenir un comportement polymorphique dans un constructeur C++?
- 17. Comment allouer dynamiquement de la mémoire à un type de données polymorphique?
- 18. Comment utiliser la valeur d'attribut comme discriminateur pour la sélection de type polymorphique XML?
- 19. En désérialisation XML .NET, comment puis-je autoriser l'utilisation polymorphique des types Array?
- 20. Rails: requête pour obtenir les éléments récents basés sur l'horodatage d'une association polymorphique
- 21. Approche de conception de modèle et de contrôleur pour l'association polymorphique
- 22. Est-ce qu'un moteur polymorphique a d'autres utilisations que l'écriture de virus?
- 23. jQuery Validation Envoi sans validation dans Firefox
- 24. Validation côté client xVal avec validation Légende
- 25. Validation Silverlight. Problème avec la validation email
- 26. Pourcentage de validation de validation utilisateur
- 27. Comportement de validation imitant sans validation
- 28. Validation de Struts2 - Aucune validation à l'entrée
- 29. Hibernate retardé la validation jusqu'à la validation
- 30. Jquery Validation Plugin, validation de forme dynamique
En fait, c'est un polymorphe avec un has_many à travers une table de jointure, donc l'association polymorphique est dans la table de jointure. Je viens de mettre une validation sur le _id et _type portée avec l'ID de l'article et cela a très bien fonctionné. – tesserakt