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 migrent vers Rails 4.0 sont confrontés aux mêmes problèmes (après avoir googlé pour des choses similaires).
J'ai lu les liens suivants:
Maintenant, en utilisant devise, j'ai créé un modèle utilisateur, j'ai créé le contrôleur suivant à l'aide des éléments ci-dessus (et j'ai veillé à l'inclure dans mon fichier de routes). Mes paramètres supplémentaires sont prénom et nom.
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
Y a-t-il autre chose que je devrais faire? Est-ce la meilleure façon de faire les choses à partir de maintenant (depuis la suppression de attr_accessor). Mes formulaires semblent bien fonctionner (à la fois la nouvelle et la mise à jour). Les gists ont dit d'utiliser "resource_params" mais cela a toujours donné l'erreur "Unpermitted parameters" dans mon journal de serveur.
Merci pour les dernières mises à jour sur la branche Rails4 de Devise, il n'a pas vraiment besoin d'insérer 'resource_params'.
J'ai créé une toute nouvelle application Rails4 et suivi les étapes d'installation de base de Devise 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 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 les parameters
comme celui-ci
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