2010-07-25 4 views
0

J'ai un modèle de résumé qui a deux associations (documents et assistants). Un document est le résumé téléchargé tandis qu'un assistant est la sortie de l'utilisateur à l'aide de l'assistant de reprise. Ce sont des modèles mutuellement exclusifs. Comment puis-je valider que l'utilisateur a créé un document ou un assistant lors de la validation du CV?Valider la présence d'associations mutuellement exclusives

Je construis l'association dans mon contrôleur de résumé en tant que tel.

 
if params[:document] 
    @document = @resume.build_document(params[:document]) 
else 
    @wizard = @resume.build_wizard(params[:wizard]) 
end 

Je soit faire un resume.save ou resume.update_attributes (params [:]) curriculum vitae.

Répondre

2

Utiliser polymorphique has_one/belongs_to. Ensuite, vous pouvez simplement d'attribuer documented attribut à votre Resume objet:

class Resume < ActiveRecord::Base 
    belongs_to :documented, :polymorphic => true 

    # this line validates the presence of associated object (Wizard or Document) 
    validates_associated :documented 
end 

class Document < ActiveRecord::Base 
    has_one :resume, :as => :documented 
end 

class Wizard < ActiveRecord::Base 
    has_one :resume, :as => :documented 
end 

>> document = Document.create(...) 
>> resume = Resume.find(...) 
>> resume.documented = documented 
>> resume.save! 
>> resume.documented.class # => Document 
>> wizard = Wizard.create(...) 
>> resume.documented = wizard 
>> resume.save! 
>> resume.documented.class # => Wizard 
+0

Techniquement, le CV est le parent. –

+0

À quoi ressemblerait la validation? –

+0

Mise à jour du code avec validation pour l'assistant ou le document. – Eimantas

Questions connexes