2016-03-30 24 views
0

ユーザモデルにプロパティ名を追加したいと思います。私は、移行コマンドを実行してデータベースに列を追加し、それが機能しました。ユーザー自身にプロパティを追加することもできましたが、dbには保存されません。ruby​​ on railsでdeviseからユーザに余分なパラメータを追加

RegistrationControllerのsign_upaccount_updateの必須パラメータにどのようにプロパティ "name"を追加できますか?

は、これは私のユーザモデル

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
    attr_accessor :name 
end 

私はラインを追加しましたルーティングではRegistrationController

class Users::RegistrationsController < Devise::RegistrationsController 

    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 

にこのようmethodesに必要なのparamsを追加しようとしたある

devise_for :users, controllers: { registrations: 'users/registrations' }

しかし、ユーザーの名前データベースには保存されません。

class Users::RegistrationsController < Devise::RegistrationsController 

def sign_up_params 
    devise_parameter_sanitizer.for(:sign_up).push(:name) 
end 

def account_update_params 
    devise_parameter_sanitizer.for(:account_update).push(:name, :email, :password, :password_confirmation, :current_password) 
end 
end 
+0

それは足場によって、または手動で作成されたのですか? –

+0

工作員が足場から来た – Kupi

答えて

2

signupsignin & account_updateのparamsを設定するには、あなたのApplicationControllerにこれを追加します。

+0

私は自分のユーザーモデルで追加したプロパティを削除した後にしか動作していないようです。 – Kupi

0

あなたはこれを試すことができDevise Parameter Sanitization

を確認してください。

def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name,:email, :password, :password_confirmation) } 
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) } 
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :username, :anonymous, :email, :password, :password_confirmation,:reset_password_token) } 
end 

も同様ApplicationControllerbefore_filterを追加します。

before_filter :configure_permitted_parameters, if: :devise_controller? 
+0

私はこのエラー「ユーザーのために提供されたサニタイザはありません。 – Kupi

+0

この答えで 'for 'の引数を':user'から ':sign_up'と':account_update'に変更してみてください。 – Sajan

+0

@sajanそれを指摘してくれてありがとう。私は答えを編集しました。 – dp7

関連する問題