it-swarm.com.de

Starke Parameter mit Rails und Devise

Ich verwende den Rails 4.0-Zweig von devise zusammen mit Ruby 2.0.0p0 und Rails 4.0.0.beta1.

Dies ist die Art von Frage, bei der ich prüfe, ob ich es richtig mache oder ob es andere Dinge gibt, die ich tun sollte. Ich bin sicher, dass viele Leute, die auf Rails 4.0) umziehen, vor den gleichen Problemen stehen (nachdem sie nach ähnlichen Dingen gegoogelt haben).

Ich habe die folgenden Links gelesen:

Nachdem ich ein Benutzermodell erstellt hatte, erstellte ich den folgenden Controller mit den oben genannten Angaben (und stellte sicher, dass er in meiner Routendatei enthalten ist). Meine zusätzlichen Parameter sind Vorname und Nachname.

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

Gibt es noch etwas, was ich tun sollte? Ist dies von nun an die beste Methode, um Dinge zu erledigen (seit dem Löschen von attr_accessor)? Meine Formulare scheinen einwandfrei zu funktionieren (sowohl die neuen als auch die aktualisierten). Die Gists sagten "resource_params" zu verwenden, aber das gab immer den "Unpermitted parameters" Fehler in meinem Server Log.

54
user1202888

Vielen Dank für die neuesten Aktualisierungen im Rails4-Zweig von Devise, es muss nicht wirklich 'resource_params' eingefügt werden.

Ich habe eine brandneue Rails4-App erstellt und bin den grundlegenden Installationsschritten von Devise gefolgt, und meine App funktioniert ordnungsgemäß. Ich denke, Sie haben es gut gemacht.

Es gibt jedoch ein modifiziertes Gist, das Ihnen einige zusätzliche Details in Bezug auf zulässige Parameter gibt, wenn Sie Folgendes benötigen:

Quelle: 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
66
Zoltan

Für Rails 5, Devise 4 verwenden Sie Folgendes:

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

Referenz

26
Ronak Jain

Es funktioniert sehr gut mit dem Hinzufügen eines Moduls in config/initializers mit allen parameters wie folgt

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
Rokibul Hasan