J'essaie de valider un champ en fonction des attributs du modèle associé. regardant le code plus logique (je l'espère)reverse validates_associated
class User < ActiveRecord::Base
has_and_belongs_to_many :user_groups
has_one :profile, :dependent => :destroy
accepts_nested_attributes_for :profile
validates_associated \
:profile,
:allow_destroy => true
end
class Profile < ActiveRecord::Base
belongs_to :user
validates_presence_of \
:business_name,
:if => self.user.user_groups.first.name == 'Client'
end
lorsque je soumets le formulaire pour créer un nouvel utilisateur, je reçois
undefined method `user_groups' for nil:NilClass
Fondamentalement, je ne veux que pour valider la présence du champ business_name si je crée un nouveau client.
i ont également essayé d'utiliser
:if => Proc.new { |p| p.user.user_groups.first.name == 'Clients' }
avec les mêmes résultats.
peut-être que j'aboie complètement le mauvais arbre, mais des suggestions sur la réalisation de cela?
hmm ... il peut ne pas être possible alors jusqu'à ce que validates_associated accepte des paramètres? – brewster
Votre logique est alambiquée ici. J'ai mis à jour ma réponse originale pour montrer comment vous pouvez découpler la logique de validation dans Profile à autonome. Vous devrez passer l'indicateur is_business pour déclencher les validatoins d'entreprise spéciales sur votre profil. – Winfield