복붙노트

[RUBY-ON-RAILS] 사용자 정의 필드 / 레일과 고안 열 추가 4

RUBY-ON-RAILS

사용자 정의 필드 / 레일과 고안 열 추가 4

나는 및 레일 4 (유증 보석을 사용) 내 사용자 모델에 FULL_NAME 필드 / 열을 추가하려고 시도하고있다.

예제의 대부분은 온라인 attr_accessible를 사용하는 것이 좋습니다,하지만이 레일 4에서 다르게 접근해야처럼 소리가 난다.

어떻게 사용자 모델에 FULL_NAME을 추가? 나는 성공적으로 마이그레이션을 실행 할 수있었습니다.

파일 : 마이그레이션> add_full_name_to_users을

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

파일 : 등록> 응용 프로그램 / 뷰 / 궁리 / 등록 / new.html

.
.
.
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>

  <%= f.label :full_name %>
  <%= f.text_field :full_name, :autofocus => true %>

  <%= f.label :email %>
  <%= f.email_field :email %>
.
.
.

해결법

  1. ==============================

    1.모델은 FULL_NAME 속성이 후에는 #sign_up에 대한 매개 변수를 허용 구성해야하고 고안 작업을 #account_update 것입니다.

    모델은 FULL_NAME 속성이 후에는 #sign_up에 대한 매개 변수를 허용 구성해야하고 고안 작업을 #account_update 것입니다.

    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
    
  2. ==============================

    2.이 솔루션은 sign_up 및 업데이트 작업, 작동합니다 :

    이 솔루션은 sign_up 및 업데이트 작업, 작동합니다 :

      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
    
  3. ==============================

    3.유증 문서에서 :

    유증 문서에서 :

    사용자의 요구에 맞는 접근 방법을 찾기 위해 아래의 URL을 확인해야합니다 : https://github.com/plataformatec/devise#strong-parameters

  4. ==============================

    4.유증 대신 attr_accessible에 대한 강한 매개 변수를 사용합니다. 이렇게하려면 콘텐츠와 새로운 초기화를 만들 :

    유증 대신 attr_accessible에 대한 강한 매개 변수를 사용합니다. 이렇게하려면 콘텐츠와 새로운 초기화를 만들 :

    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
    
  5. from https://stackoverflow.com/questions/16297797/add-custom-field-column-to-devise-with-rails-4 by cc-by-sa and MIT license