2011-05-28 11 views
24

Actualizando el formato del código para una mejor visualización.No se pueden asignar en masa los atributos protegidos

gente,

He estado mirando este por algún tiempo, pero no entiendo lo que podría echar a perder aquí. Estoy usando 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, 

final

-------------------- ingrese comenzar la producción ------------- -----------------

Comenzó la POST "/ usuarios" para 127.0.0.1 en 2011-05-28 11:43:27 -0700 Procesamiento por RegistrationsController # crear como Parámetros de HTML: {"utf8" => "√", "authenticity_token" => "CEmdqlsmdYa6Jq0iIf5KAxxISsUCREIrFNXWkP80nhk =", "usuario" => {"email" => "[email protected]", "contraseña" => "[FILT ERED]", "addresses_attributes" => {"0" => {"street_address1" => "234 Pitkin Ct.", "Zip" => "12456"}}} , "commit" => "Registrarse"} ADVERTENCIA: no puede atributos masa-asignar protegidas: addresses_attributes SQL (0.0ms) Begin SQL (164.0ms) Mostrar Tablas
carga de usuarios (0.0ms) SELECT users . id DE users DONDE (users. email = BINARIO '[email protected]') LIMIT 1 SQL (1,0 ms) ROLLBACK

----------------- --- final de salida de registro ------------------------------

El zip está presente en los datos publicados y los datos publicados parecen estar formateados correctamente. En el formulario de la página web recibo el error de que "Las direcciones zip no pueden estar en blanco". He buscado por qué causa la advertencia "No se puede asignar en masa los atributos protegidos", pero no he encontrado nada que me ayude.

Gracias por sus pensamientos y sugerencias.

-S

Respuesta

32

un vistazo aquí y aprender :)

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


Editar:

Tener accepts_nested_attributes_for en el modelo de usuario que permite enviar los datos al modelo de direcciones.

Luego, en el modelo de Dirección, que tiene que establecer el solicitado attr_accessible

+1

Gracias por los comentarios @apneadiving. Revisé el episodio de railscasts y confirma mi comprensión del attr_accessible. Lo abrí en mi modelo de Dirección (quitando attr_accessible) para no tener ningún problema. Lo agregué de nuevo en "attr_accessible: street_address1,: zip,: address_attributes" pero aún recibo el mismo error. He hecho esto en el pasado y nunca he tenido que declarar attr_accessible en: nestedclass_attributes - Me pregunto si de alguna manera algo hace algo en la parte posterior que causa este problema. – Sanjay

+0

Intentó "attr_accessible: attribute_attributes" y "attr_accessible: addresses_attributes" – Sanjay

+0

en su modelo de usuario: 'attr_accessible: addresses_attributes', en su modelo de dirección:' attr_accessible: zip,: street_address_1' – apneadiving

10

Dentro de SpecificModel (appfolder/app/modelo/specific_model.rb)

Trate de usar

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

+0

Intentó attr_accessible: street_address1,: zip,: address_attributes pero obtiene el mismo error. – Sanjay

3

basta con incluir el campo de datos en el modelo como se menciona más adelante

attr_accessible :addresses_attributes 
Cuestiones relacionadas