Depuis que Rails 4 n'autorise plus l'attr_accessor que l'on ajoutait dans le Model, il nous faut configurer dans le Controller les champs qui seront persistants.

Pour ajouter par exemple un nom à nos Users, il nous faut donc créer une migration tel que ci-dessous.

# db/migrate/xxxxxxxxxxxxx_add_name_to_users.rb
class AddNameToUsers < ActiveRecord::Migration
  def change
    add_column :users, :name, :string
  end
end

Puis créer un controller qui va hériter d'un controller de Devise pour gérer nos enregistrements et mises à jour. Nous allons alors modifier les fonctions privées qui sont utilisées par le controller pour collecter les informations requises à la création ou la mise à jour d'un User.

# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController

  private
    def sign_up_params
      params.require(:user).permit(:name, :email, :password, :password_confirmation)
    end

    def account_update_params
      params.require(:user).permit(:name, :email, :password, :password_confirmation, :current_password)
    end
end

Il nous reste maintenant à modifier le fichier routes pour que notre controller soit pris en compte.

#config/routes
devise_for :users, :controllers => { registrations: 'registrations' }

Voilà !!

Publié dans les catégories suivantes

javascriptruby
comments powered by Disqus

Téléphone

+33 637 700 504

Adresse

Bordeaux, 33300
France