2011-02-18 7 views
14

Tengo una forma anidada de múltiples capasforma anidada que provocó una '¿Puede atributos no protegida masa a asignar advertencia

 
User->Tasks->Prerequisites 

y de la misma forma

 
User->Tasks->Location 

La forma ubicación funciona bien , ahora estoy tratando de especificar los requisitos previos para la tarea actual. El requisito previo es un task_id almacenado en el campo: completed_task.

Cuando envío del formulario, me sale el siguiente error en la salida

 
WARNING: Can't mass-assign protected attributes: prerequisite_attributes 

Una advertencia para cada tarea del usuario.

He pasado por todas las otras preguntas relacionadas con esta, asegurando que el nombre del campo: completed_task está haciendo referencia correctamente,

añadiendo attr_accessible a mi modelo (que ya estaba allí y me extendieron).

No estoy seguro de qué más se supone que debo hacer.

Mis modelos se parecen a

 
class Task < ActiveRecord::Base 
    attr_accessible :user_id, :date, :description, :location_id 

    belongs_to :user 
    has_one :location 
    accepts_nested_attributes_for :location 
    has_many :prerequisites 
    accepts_nested_attributes_for :prerequisites 
end 

class Prerequisite < ActiveRecord::Base 
    attr_accessible :completed_task 

    belongs_to :task 
end 

el formulario utiliza Formtastic, y estoy incluyendo el formulario a través de

 
<%= f.semantic_fields_for :prerequisites do |builder3| %> 
    <%= render 'prerequisite_fields', :f=>builder3 %> 
<% end %> 

--- _prerequisite_fields.html.erb ----- 
< div class="nested-fields" > 
    <%= f. inputs:completed_step %> 
</div> 

¿Alguna sugerencia?

+0

+1 por hacer esta pregunta, ¡estaba buscando lo mismo! – weltschmerz

Respuesta

26

Añadir: prerequisite_attributes a attr_accessible con el fin de masa-asignar

attr_accessible :user_id, :date, :description, :location_id, :prerequisite_attributes

En caso de que pueda empezar.

+1

yup, eso lo hizo. ¿Es esta la manera recomendada? No parecía necesitar esto en mi otra forma anidada. Anteriormente, había agregado: prerequisites_attributes al modelo de requisitos previos, que supongo que fue mi error – pedalpete

+0

Sí, siempre que haya anidado recursos en su formulario de esta manera, pasará los parámetros como un hash de resource_attributes. Esto es, por definición, asignación masiva, por lo que debe incluirlo en attr_accessible. – jtesch

Cuestiones relacionadas