Activerecord::MassAssignmentSecurity::Erreur: impossible de masse-assigner des attributs protégés:
Je suis en train de suivre le tutoriel Ruby on Rails 3 Essentiel de la Formation de Lynda.com. Je vais avoir un moment difficile la création d'un Actif de l'Entrée d'Enregistrement. C'est l'erreur que je reçois dans ma console.
1.9.3p125 :007 > user = User.new(:first_name => "Mike", :last_name => "Jones")
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: first_name, last_name
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:48:in `process_removed_attributes'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:20:in `debug_protected_attribute_removal'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:12:in `sanitize'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security.rb:230:in `sanitize_for_mass_assignment'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.3/lib/active_record/attribute_assignment.rb:75:in `assign_attributes'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.3/lib/active_record/base.rb:498:in `initialize'
from (irb):7:in `new'
from (irb):7
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands/console.rb:47:in `start'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start'
from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>`
C'est ce que j'ai dans mon Modèle:
class User < ActiveRecord::Base
attr_accessible :first_name, :last_name
end
Ce que je fais mal. J'ai rails 3.2.3
OriginalL'auteur cw.prime | 2012-04-16
Vous devez vous connecter pour publier un commentaire.
Essayez de redémarrer la console. Si vous avez créé le modèle de l'utilisateur après que la console a été lancé, vous devez le redémarrer.
recharger! dans la console devrait recharger la console de sorte que vous n'avez pas à redémarrer
OriginalL'auteur Maciek Simm
De ce que je sais que lynda cours a été développé sur rails3 et dans les rails 3.2.3 il n'y a pas de masse d'affectation par défaut. Vous devez aller votre modèle et ajouter attr_accessible :nom :position :visible. Fondamentalement, vous devez ajouter chaque attribut que vous souhaitez masse attribuer.
OriginalL'auteur Michał Korzeniowski
Sans précautions Masse de cession permet à des attaquants afin de définir une base de données de la colonne valeur, d'où il a été désactivé par défaut.
La description détaillée est dans le Ruby On Rails Guide De Sécurité.
OriginalL'auteur vbali
J'ai juste ajouté le attr_accessible :prenom, :nom, :nom d'utilisateur de la ligne, les modèles de fichier.
Cela a fonctionné pour moi.
OriginalL'auteur Ryan
J'étais trop en suivant le tutoriel Ruby on Rails 3 Essentiel de la Formation de Lynda.com si quelqu'un a eu le même problème ici, c'est ce qui a fonctionné pour moi,
Désactiver le paramètre de sécurité. Ouvrez config/application.rb et changer de configuration.active_record.whitelist_attributes à false au lieu de true. Cela permet à votre application un peu moins sécurisé, mais vous permet de vous déplacer rapidement vers l'avant avec le tutoriel.
c'est à partir de: http://www.lynda.com/Ruby-on-Rails-3-tutorials/essential-training/55960-2/faqs
OriginalL'auteur Barry G
Assurez-vous de mettre
attr_accessible :first_name, :last_name
dans le modèle de l'Utilisateur et non pas dans le contrôleur.OriginalL'auteur B Seven