Je vous écris une application avec les modèles et les associations suivantes:Validation des grands-parents: deux parents ont le même parent?
class Company < ActiveRecord::Base
has_many :customers, :dependent => :destroy
has_many :goals, :dependent => :destroy
end
class Customer < ActiveRecord::Base
belongs_to :company
has_many :tasks
has_many :goals, through: :tasks
end
class Goal < ActiveRecord::Base
has_many :tasks, :dependent => :destroy
belongs_to :company
has_many :customers, through: :tasks
end
class Task < ActiveRecord::Base
belongs_to :goal
belongs_to :customer
end
maintenant dans la vue, un form_for une nouvelle tâche a déjà l'objectif ou le client sélectionné et l'autre association select est un ensemble filtré en fonction sur l'autre modèle. Théoriquement, il est impossible pour l'utilisateur de créer une tâche sous deux sociétés différentes, c'est-à-dire la société @ task.goal.company == @ task.customer.company.
Mais il semble être une bonne pratique d'avoir une validation pour vérifier qu'il n'y a qu'un seul grand-parent. Je comprends en utilisant un Proc.new que vous pouvez valider si un certain critère est rencontré mais je veux qu'il soit toujours validé donc ce n'est pas la solution que je cherche.
Merci. BTW laissez-moi savoir si la structure du modèle semble ridicules ou si j'ai fait quelque chose clairement contre la convention des rails.
Cela a fonctionné parfaitement. Juste au cas où quelqu'un d'autre viendrait chercher une réponse, vous avez évidemment besoin d'un if/unless pour appeler l'erreur: ' ' –
J'ai en fait cela dans le code, faites défiler vers la droite pour le voir. :) – Veraticus
Doh! Donc vous faites, désolé à ce sujet = D –