2010-08-13 8 views
8

¿Hay alguna manera de que los rieles generen un error si se intenta asignar en masa los atributos que attr_accessible no permite?Rails y attr_accessible: ¿hay alguna manera de generar una excepción si un atributo no asignable en masa se asigna en masa?

Esto sería útil en el desarrollo para recordarme por qué mi brillante nuevo modelo no funciona, y también es bueno iniciar sesión en la producción para detectar actividad maliciosa.

estoy usando los carriles 2.3.8 pero probablemente pronto a migrar a 3.

Respuesta

6

A partir de Rails 3.2 esto ya no requiere monkeypatching - rails proporciona este comportamiento ahora. Poner esto en development.rb y test.rb:

config.active_record.mass_assignment_sanitizer = :strict 
0

No estoy seguro de si esto iba a funcionar, pero se podría escribir una prueba para ver si su objeto "respond_to (: unexpected_attr) ". A continuación, puede intentado forzar la alimentación de esa attr

Alex

2

sugeriría something like the Bento project has incorporated into their Rails app.

Crean un inicializador de rieles bajo config/initializers/y luego anulan el método apropiado en la clase ActiveModel para generar un MassAssignmentError (dentro de entornos que no son de producción).

+0

monkeypatching ya no es necesario, yay! 'config.active_record.mass_assignment_sanitizer =: strict' –

Cuestiones relacionadas