Vorrei sapere come integrare entrambe queste gemme (ideare + Parametri Strong), dal momento che params forti probabilmente saranno aggiunti al nucleo rotaie in 4,0Devise e parametri forti
ogni aiuto è benvenuto grazie
Vorrei sapere come integrare entrambe queste gemme (ideare + Parametri Strong), dal momento che params forti probabilmente saranno aggiunti al nucleo rotaie in 4,0Devise e parametri forti
ogni aiuto è benvenuto grazie
Aggiornamento per disposizione testamentaria 4.x
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
devise_parameter_sanitizer.permit(:account_update, keys: [:username])
end
end
Dopo aver aggiunto due gemme, ideare funzionerà come normale.
Aggiornamento: con l'ultima versione di Devise 3.x, come descritto in devise#strong-parameters, la chiave di autenticazione (normalmente il campo di posta elettronica) ei campi della password sono già consentiti. Tuttavia, se nel modulo di registrazione sono presenti ulteriori campi, è necessario consentire a Devise di conoscere i campi aggiuntivi da consentire. Il modo più semplice per farlo è con un filtro:
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end
end
Per Devise 2.x, se si utilizza la funzione di sicurezza che richiede esplicitamente whitelist parametri contaminato nel modello di utente:
include ActiveModel::ForbiddenAttributesProtection
i cambiamenti necessari sono trovati a https://gist.github.com/3350730 che sovrascrive alcuni dei controller.
Il modo semplice è aggiungere un semplice filtro prima nel tuo ApplicationController. Se si dispone di ruoli diversi e/o altro scenario più complesso ci sono altre opzioni sul link sottostante:
before_filter :configure_sanitized_params, if: :devise_controller?
def configure_sanitized_params
devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:firstname, :designation_id ,:middlename, :previous_experiance_year,:previous_experiance_month,:lastname, :email, :username, :password, :password_confirmation, :previous_experiance,:empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone,:deactivated_date,:image)}
devise_parameter_sanitizer.for(:account_update) {|u| u.permit(:remove_image,:firstname, :designation_id ,:middlename, :lastname, :email, :username, :empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone, :deactivated_date,:image)}
end
Copia e incolla questo codice al controller dell'applicazione, anche al posto di: cognome, e altri campi, devi aggiungere i tuoi campi.
sì, questo è il nuovo modo di farlo. la domanda è stata posta nel giorno in cui idea non aveva implementato forti parametri sul loro codice. –
La risposta successiva è meglio, dal mio punto di vista, dal momento che viene inoltrata su Devise public API – msa7
Ciò sarebbe dovuto al fatto che la mia risposta proveniva da oltre un anno fa. Ho aggiornato la risposta in base ai nuovi sviluppi. – ronalchn
questa domanda è un perfetto esempio di quanto sia piccolo il mondo, hai risposto alla mia domanda con il mio gist = D –