Des paramètres forts avec des Rails et des dispositifs

j'utilise la branche rails 4.0 de devise avec ruby 2.0.0P0 et Rails 4.0.0.beta1.

C'est le genre de question Où je vérifie si je le fais correctement, ou s'il y a d'autres choses que je devrais faire. Je suis sûr que beaucoup de gens qui déménagent sur Rails 4.0 sont confrontés aux mêmes problèmes (après googler pour des choses similaires).

j'ai lu les liens suivants:

j'ai créé un modèle Utilisateur, j'ai créé le contrôleur suivant en utilisant les gists ci-dessus (et je me suis assuré de l'inclure dans mon fichier de routes). Mes paramètres supplémentaires sont first_name et last_name.

class Users::RegistrationsController < Devise::RegistrationsController
  def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
  end
  def account_update_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
  end
  private :sign_up_params
  private :account_update_params
end

Est-il autre chose que je devrais faire? Est-ce la meilleure façon de faire les choses à partir de maintenant (depuis tomber attr_accessor). Mes formulaires semblent bien fonctionner (à la fois le nouveau et la mise à jour). Les gists ont dit d'utiliser " resource_params "mais cela donnait toujours l'erreur" unpermitted parameters " dans mon journal de bord du serveur.

53
demandé sur Community 2013-05-05 02:29:38

3 réponses

Merci pour les dernières mises à jour sur Rails4 branche de Devise, il n'a pas vraiment besoin d'insérer 'resource_params'.

j'ai créé une toute nouvelle application Rails4 et j'ai suivi les étapes d'installation de base et mon application fonctionne correctement, donc je pense que vous avez bien fait.

mais il y a un gist modifié qui vous donne quelques détails supplémentaires en termes de paramètres autorisés si vous avez besoin:

Source: https://gist.github.com/bluemont/e304e65e7e15d77d3cb9

# controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController

  before_filter :configure_permitted_parameters

  protected

  # my custom fields are :name, :heard_how
  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) do |u|
      u.permit(:name, :heard_how,
        :email, :password, :password_confirmation)
    end
    devise_parameter_sanitizer.for(:account_update) do |u|
      u.permit(:name,
        :email, :password, :password_confirmation, :current_password)
    end
  end
end
67
répondu Zoltan 2014-09-03 23:55:05

pour les Rails 5, Devise 4 Utilisez ceci:

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :email, :password, :password_confirmation])
  end
end

référence

26
répondu Ronak Jain 2016-06-10 08:03:35

cela fonctionne très bien avec l'ajout d'un module dans config/initializers avec tous parameters comme ceci

module DevisePermittedParameters
  extend ActiveSupport::Concern

  included do
    before_filter :configure_permitted_parameters
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :email, :password, :password_confirmation) }
  end

end

DeviseController.send :include, DevisePermittedParameters
7
répondu Rokibul Hasan 2015-09-07 11:39:47