2014-04-15 1 views
1

를 nil을 4 프로젝트, 내 사용자 모델에서 3 개 사용자 정의 필드,유증 사용자 모델 사용자 정의 필드 항상 내 레일 고안 사용하고

  • COMPANY_NAME
  • PHONE_NUMBER
  • 이름

다음 코드로 레일즈 콘솔에 새 사용자를 생성 할 때

u = User.new(email:'[email protected]', company_name: "xxxxxx", phone_number: "12345678", name: "Test Name", password: 'asdfadsf') 
,451,515,

그런 다음이 값을 제대로

u.email => "[email protected]"

을 보여, 내가 필드에 내장 고안 액세스 그리고 제대로

#<User id: nil, email: "[email protected]", encrypted_password: "$2a$10$xf9N0xw9zrGBDngD48IdRO9AEUkAJH1/XjOy0dFZTd0L...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, organization_id: nil, username: nil, admin: nil, profile_img: nil, tagline: nil, name: "Test Name", status: 1, country_code: nil, phone_number: "12345678", company_name: "xxxxxx"> 

을 보여주고,이 인스턴스를 인쇄

하지만 COMPANY_NAME처럼, 사용자 정의 필드에 액세스하려고 할 때, 그것은 전무 대신

u.company_name 을 보여줍니다 =>nil

누구나 단서가 있습니까?

답변

0
:

def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :name, :company_name, :phone_number, :password, :password_confirmation) } 
end 

또는 당신은 어떤 제한을하지 않으려면

문제를 발견했습니다. company_name을 재정의하는 사용자 모델에 다음 줄을 추가했습니다. phone_number 메서드는이 줄을 제거하고 작동시킵니다.

attr_accessor :company_name, :country_code, :phone_number 

def company_name 
end 

def phone_number 
end 

def country_code 
end 
2

강력한 매개 변수를 통해 이러한 사용자 지정 특성을 허용해야합니다.

class ApplicationController < ActionController::Base 
    before_action :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << [:name, :company_name, :phone_number] 
    end 
end 

또는 당신이 사용할 수 있습니다 :

devise wiki는 다음과 같은 몇 가지 유용한 예,이

def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit! } 
end 
+0

답장을 보내 주셔서 감사합니다. 하지만 이미 내 appcontroller에 허용 된 매개 변수 함수를 추가했습니다. 문제는이 문제를 일으키는 getter 함수를 재정의하는 것입니다. – fuyi

관련 문제