Ajouter un champ / une colonne personnalisé à concevoir avec Rails 4

J’essaie d’append un champ / colonne full_name à mon modèle d’utilisateur (en utilisant le gem de périphérique) et Rails 4.

La plupart des exemples en ligne recommandent d’utiliser attr_accessible , mais il semble que cela devrait être abordé différemment dans Rails 4.

Comment pourrais-je append full_name à mon modèle d’utilisateur? J’ai pu réussir la migration.

Fichier: Migration> add_full_name_to_users

 class AddFullNameToUsers < ActiveRecord::Migration def change add_column :users, :full_name, :string end end 

Fichier: Inscription> app / views / devise / registration / new.html

 . . .  resource_name, :url => registration_path(resource_name)) do |f| %>    true %>   . . . 

Une fois que votre modèle a son atsortingbut full_name, vous devrez configurer les parameters autorisés pour les actions #sign_up et #account_update Devise.

 class ApplicationController < ActionController::Base before_action :configure_devise_permitted_parameters, if: :devise_controller? protected def configure_devise_permitted_parameters registration_params = [:full_name, :email, :password, :password_confirmation] if params[:action] == 'update' devise_parameter_sanitizer.for(:account_update) do |u| u.permit(registration_params << :current_password) end elsif params[:action] == 'create' devise_parameter_sanitizer.for(:sign_up) do |u| u.permit(registration_params) end end end end 

Cette solution devrait fonctionner en travaillant avec sign_up et update :

  class ApplicationController < ActionController::Base before_filter :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:full_name]) devise_parameter_sanitizer.permit(:account_update, keys: [:full_name]) end end 

A partir de la documentation du produit:

Lorsque vous personnalisez vos propres vues, vous pouvez append de nouveaux atsortingbuts aux formulaires. Rails 4 a déplacé le paramètre sanitization du modèle vers le contrôleur, ce qui a également amené Devise à gérer ce problème au niveau du contrôleur.

Vous devriez vérifier l’URL ci-dessous pour trouver l’approche qui répondra le mieux à vos besoins: https://github.com/plataformatec/devise#strong-parameters

Activer les parameters forts pour Devise au lieu de attr_accessible. Pour ce faire, créez un nouvel initiliazer avec ce contenu:

 DeviseController.class_eval do def resource_params unless params[resource_name].blank? params.require(resource_name).permit(:email, :password, :password_confirmation, :remember_me) end end end