tutorial software rails ejemplos descargar curso caracteristicas aprender ruby-on-rails

ruby on rails - software - Error de Rails: no se pueden asignar en masa los atributos protegidos



ruby on rails software (3)

Hubo un importante cambio de seguridad en los carriles 3.2.3 que requiere que se permita explícitamente la asignación masiva configurando config.active_record.whitelist_attributes en false

http://weblog.rubyonrails.org/2012/3/30/ann-rails-3-2-3-has-been-released/

http://www.h-online.com/security/news/item/Rails-3-2-3-makes-mass-assignment-change-1498547.html

alternativamente (y mejor), en lugar de permitir el control masivo, solo tiene que configurar attr_accessible para los atributos en su modelo que desea poder cambiar, por ejemplo

attr_accessible :city_id, :name # list all fields that you want to be accessible here

Consulte la guía de seguridad de rieles para obtener más información sobre la asignación de masa en rieles.

Estoy tratando de construir una aplicación de carriles AddressBook extremadamente simple. Sin embargo, recibo este error "No se puede asignar en masa los atributos protegidos: city_id". ¿Cómo puedo arreglar esto? Por favor, siéntase libre de agregar cualquier comentario / sugerencia a su respuesta con respecto al código de rieles a continuación. Gracias.

Cómo creé el proyecto (desde cero):

rails new demo rails generate model City name:string rails generate scaffold User name:string city:references rake db:migrate

db / seeds.db:

City.create(name: "City1") City.create(name: "City2") City.create(name: "City3")

rake db: semilla

cambió esta línea <%= f.text_field :city %> de la app/views/users/_form.html.erb a <%= f.collection_select :city_id, City.all, :id, :name %>

user.rb belongs_to :city línea generada automáticamente belongs_to :city to has_one :city .

agregado belongs_to :city to city.rb

PD: estoy usando Rails 3.2.3 y Ruby 1.9.3.


Simplemente incluya el campo de datos en el modelo como:

attr_accessible :city_id


o puedes cambiar

config.active_record.mass_assignment_sanitizer = :strict

a

config.active_record.mass_assignment_sanitizer = :logger

No sé por qué tuvo que cambiar a :logger pero esta es la solución para el error.