2016-09-26 2 views
1

Ich habe folgende Application:Devise nicht Benutzernamen in die Datenbank einfügen

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    before_action :configure_permitted_parameters, if: :devise_controller? 
    before_filter :require_vote 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username, :email]) 
    # devise_parameter_sanitizer.for(:sign_up) << :username 
    end 

    private 

    def require_vote 
    unless cookies[:voted] 
     redirect_to vote_path 
    end 
    end 
end 

Auch ich habe folgende User-Modell:

class User < ApplicationRecord 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 
    has_many :pictures 
    attr_accessor :username 
    validates :username, presence: true 
end 

Und wenn ich die Registrierung in Protokollen sehe ich, dass es fügt den Benutzernamen nicht in die Datenbank ein, aber er erhält den Benutzernamen in den Parametern. Was mache ich falsch?

+0

Bitte beziehen Sie sich auf diese Antwort http://stackoverflow.com/a/18567908/2681997 –

+0

@ABPrime Ich bekomme diese undefinierte Methode 'für 'für # Meinten Sie? Gabel – Krigga

+0

Welche Schienenversion verwenden Sie? –

Antwort

0
class ApplicationController < ActionController::Base 
    include CanCan::ControllerAdditions 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 

    before_action :configure_devise_permitted_parameters, if: :devise_controller? 


    protected 

    def configure_devise_permitted_parameters 
    registration_params = [:name, :email, :phone, :skype, :site, :description, :image, :image_cache, :password, :password_confirmation, :surname, :patronymic] 

    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 

Versuchen Sie es.

Verwandte Themen