2010-08-13 5 views
8

C'è un modo per fare in modo che i binari sollevino un errore se si tenta di assegnare in massa attributi che non sono consentiti da attr_accessible?Rails e attr_accessible: esiste un modo per generare un'eccezione se un attributo non assegnabile alla massa viene assegnato in serie?

Questo sarebbe utile in fase di sviluppo per ricordarmi il motivo per cui il mio nuovo modello lucido non funziona e anche per accedere alla produzione al fine di rilevare attività dannose.

sto usando le rotaie 2.3.8 ma sarà probabilmente presto essere la migrazione a 3.

risposta

6

A partire da Rails 3.2 questo non richiede più la monkeypatching - rails fornisce questo comportamento ora. Mettete questo in development.rb e test.rb:

config.active_record.mass_assignment_sanitizer = :strict 
0

Non sono sicuro se questo dovrebbe funzionare, ma si potrebbe scrivere un test per vedere se il vostro oggetto "respond_to (: unexpected_attr)". È quindi possibile provato a forzare alimentarlo che attr

Alex

2

vorrei suggerire something like the Bento project has incorporated into their Rails app.

Crea un inizializzatore di Rails sotto configurazione/inizializzatori/e quindi sovrascrive il metodo appropriato nella classe ActiveModel per generare un errore MassAssignmentError (all'interno di ambienti non di produzione).

+0

monkeypatching non è più necessario, yay! 'config.active_record.mass_assignment_sanitizer =: strict' –

Problemi correlati