2017-08-22 1 views
-1

Si j'essaie de mettre à jour un attribut de mon modèle Student, il échoue en raison de validations.La mise à jour échoue en raison des validations

def update 
    @student = Student.find(params[:id]) 
    if params['student'] 
     if params['student']['freedays'] 
     weekday_nbs = params['student']['freedays']&.first&.split(',') 
     params['student']['freedays'] = weekday_nbs.inject([]){|sum, last| sum << Student::FREE_DAYS[last.to_i]} 
     end 
     if params['student']['vehicles'] 
     params['student']['vehicles'] = params['student']['vehicles']&.split(',') 
     end 
     if params['student']['driving_licenses'] 
     params['student']['driving_licenses'] = params['student']['driving_licenses']&.split(',') 
     end 
    end 
    @student.update(student_params) 
    redirect_to student_path(@student) 
    end 

Ceci est l'erreur que je reçois lorsque je tente de mettre à jour l'attribut (: beschikbaar):

`ActiveRecord::RecordInvalid: Validation failed: First name can't be blank, Last name can't be blank, Age can't be blank, Photo can't be blank, Studie can't be blank, Description can't be blank, Phone number can't be blank from /home/yves/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/ac‌​tiverecord-5.0.1/lib‌​/active_record/valid‌​ations.rb:78:in` 

Toute une idée de comment résoudre ce problème?

Merci!

+1

"Toute une idée de comment résoudre ce problème?" - umm, que diriez-vous de fournir les champs requis ou de supprimer les validations? –

+0

S'il vous plaît, postez votre modèle d'étudiant et votre journal! –

Répondre

0

La méthode updateappellera les et ne validations pas enregistrer si l'objet est échoué les validations. Comme vous essayez de mettre à jour un attribut particulier, je vous suggère d'utiliser update_attribute ou update_column à la place.

il suffit de changer

@student.update(student_params) 

à

@student.update_attribute(beschikbaar: params[:beschikbaar]) 

OU

@student.update_column(beschikbaar: params[:beschikbaar]) 
+0

Devrais-je faire cela pour tous les attributs séparément? – crievino

+0

@crievino Cela dépend du nombre d'attributs que vous voulez mettre à jour à la fois. Si vous voulez mettre à jour plus que l'attribut, utilisez [* update_columns *] (https://apidock.com/rails/ActiveRecord/Persistence/update_columns) – Pavan