Je suis novice en matière de rails et j'ai une question sur la meilleure façon d'appliquer des règles personnalisées à mes associations de modèles.comment appliquer les règles d'inclusion dans les associations ActiveRecord
Par exemple, supposons que je:
class Person < ActiveRecord::Base
belongs_to :organization
end
class Organization < ActiveRecord::Base
has_many :people
end
et supposons maintenant que je veux seulement permettre la commande Organization.people << Person.new(...)
pour réussir si le nouvel objet Person
est compatible avec l'autre people
qui ont déjà été ajoutés à la Organization
. Cela impliquerait d'effectuer un contrôle de validation sur tous les éléments existants de Organization.people
et de décider si le nouveau Person
pouvait être ajouté ou non.
Il me semble que je peux le faire en remplaçant tous les opérateurs d'affectation Organization.people
(tels que <<
et =
) et de mettre ma logique de validation dans la routine de remplacement.
Est-ce la meilleure façon d'y parvenir?
Merci!
Je vois ce que vous voulez dire. Cependant, la décision appartient vraiment à la classe Organisation. La classe Personne ne devrait pas décider qui fait partie de l'Organisation - cela devrait être à la charge de l'Organisation. Par conséquent, je pense que je vais accepter votre suggestion de déclencher la validation de la classe Person (c'est-à-dire en validant contre: organization) mais la validation déléguera simplement la décision à l'organisation en appelant une fonction de décision dans la classe Organization. Merci. – Denis
Oui, je suis d'accord. Vous pouvez facilement avoir un validate: blah, puis un délégué: blah à l'oranization. –