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:
- Concevoir et Paramètres De Résistance
- https://gist.github.com/kazpsp/3350730
- https://github.com/plataformatec/devise/tree/rails4#strong-parameters
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.
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
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
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