web-dev-qa-db-fra.com

Impossible d'attribuer en masse des attributs protégés

Mise à jour de la mise en forme du code pour une meilleure visualisation.

Gens,

Je regarde cela depuis un certain temps mais je ne comprends pas ce qui pourrait gâcher ici. J'utilise Devise.

class User < ActiveRecord::Base
  has_many :addresses
  accepts_nested_attributes_for :addresses

  # Other stuff here
end

class Address < ActiveRecord::Base

  belongs_to :user

  validates_presence_of :Zip #:street_address1, 

fin

-------------------- la sortie du journal commence --------------------------- ---

Démarré POST "/ users" pour 127.0.0.1 au 2011-05-28 11:43:27 -0700 Traitement par RegistrationsController # create as HTML Paramètres: {"utf8" => "√" , "authenticity_token" => "CEmdqlsmdYa6Jq0iIf5KAxxISsUCREIrFNXWkP80nhk =", "user" => {"email" => "[email protected]", "password" => "[FILT ERED]", "adresses_attributes" => {" "=> {" street_address1 "=>" 234 Pitkin Ct. "," Zip "=>" 12456 "}}}," commit "=>" S'inscrire "} AVERTISSEMENT: impossible d'attribuer en masse des attributs protégés: adresses_attributs SQL (0,0 ms) COMMENCER SQL (164,0 ms) AFFICHER LES TABLES
Charge utilisateur (0,0 ms) SELECT users.id FROM users WHERE (users.email = BINARY ' [email protected] ') LIMIT 1 SQL (1.0ms) ROLLBACK

-------------------- fin de la sortie du journal --------------------------- ---

Le Zip est présent dans les données publiées et les données publiées semblent être correctement formatées. Sur le formulaire de la page Web, je reçois le message d'erreur "Les adresses Zip ne peuvent pas être vides". J'ai recherché les causes de l'avertissement "Impossible d'attribuer en masse les attributs protégés", mais je n'ai rien trouvé qui puisse m'aider.

Merci pour vos pensées et vos conseils.

-S

28
Sanjay

Jetez un œil ici et apprenez :)

http://railscasts.com/episodes/26-hackers-love-mass-assignment


Éditer:

Le fait d'avoir accepts_nested_attributes_for Dans le modèle utilisateur vous permet d'envoyer les données au modèle d'adresse.

Ensuite, dans le modèle d'adresse, vous devez définir le attr_accessible Demandé

38
apneadiving

À l'intérieur de SpecificModel (appfolder/app/model/specific_model.rb)

Essayez d'utiliser

attr_accessible :addresses_attributes, :another_attribute_to_make_mass_assignable, :another_attribute, etc.

11
BasicObject

De nos jours (avril 2013), vous devriez commencer à utiliser https://github.com/Rails/strong_parameters

5
BvuRVKyUVlViVIc7

Il suffit d'inclure le champ de données dans le modèle comme mentionné ci-dessous

attr_accessible :addresses_attributes
3
Raj Kumar