2012-08-10 14 views
39

me gustaría saber cómo integrar ambos de esta gemas (idear + Parámetros fuertes), ya params fuertes probablemente se añadirán al núcleo carriles de 4.0Diseñar y parámetros fuertes

cualquier ayuda es bienvenida gracias

Respuesta

52

actualización para 4.x legado

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 

Después de añadir las dos gemas, idear va a funcionar con normalidad.

Actualización: con la última versión de Devise 3.x, como se describe en devise#strong-parameters, la clave de autenticación (normalmente el campo de correo electrónico) y los campos de contraseña ya están permitidos. Sin embargo, si hay campos adicionales en el formulario de inscripción, deberá informar a Devise de los campos adicionales que debe permitir. La forma más fácil de hacerlo es 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 

Para Diseñar 2.x, si se utiliza la característica de seguridad que requiere explícitamente listas blancas parámetros contaminados en el modelo de usuario:

include ActiveModel::ForbiddenAttributesProtection 

los cambios necesarios se encuentran en https://gist.github.com/3350730 que anula algunos de los controladores.

+0

Siguiente respuesta es mejor, desde mi punto de vista, ya que retransmitir en público API – msa7

+1

Eso sería porque mi respuesta fue de hace más de un año. Actualicé la respuesta en función de los nuevos desarrollos. – ronalchn

+0

esta pregunta es un ejemplo perfecto de cuán pequeño es el mundo, usted respondió mi pregunta con mi propia esencia = D –

1
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 y pega este código en el controlador de aplicación, también en lugar de: primer nombre, y otros campos, debes agregar tus campos.

+0

, sí, esta es la nueva forma de hacerlo. la pregunta fue hecha en el día en que el dispositivo no había implementado parámetros fuertes en su código. –

Cuestiones relacionadas