2012-03-21 2 views
1

클리어런스 젬을 사용하여 웹 사이트에 인증을 추가합니다. 표준 사용자 모델은 다음과 같습니다 레일을 사용하여 사용자 모델에 사용자 정의 컬럼을 추가하십시오. 클리어런스 젬

class User < ActiveRecord::Base 
    include Clearance::User 
end 

가 지금은 사용자 모델에 더 많은 속성을 추가하고 싶습니다. 레이크 dB 후

class AddCustomernameToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :customername, :string 
    end 
end 

: 나는이 마이그레이션을 만든 데이터베이스 지금은 하나 더 열이, 마이그레이션 : CUSTOMERNAME을

은 다음과 같습니다 그래서 사용자 모델 파일을 편집 등 다음 단계 :

class User < ActiveRecord::Base 
    include Clearance::User 
    attr_accessor :customername 
end 

다음 단계로 새 사용자를 등록하고 sqlite 데이터베이스 브라우저를 사용하여이 사용자의 고객 이름 필드에 'charly'테스트 문자열을 추가했습니다.

내 컨트롤러에서 이제는 모든 데이터가 있는지 확인하기 위해 사용자 개체를 만들고 인쇄하려고합니다.

thisUser = User.find(current_user.id) 
puts thisUser.inspect 

콘솔 출력은 :

#<User id: 1, email: "[email protected]", encrypted_password: "0494a9b3b692acaea96ab57bed500adf26dbafa5", salt: "75c889d099438476204ce46b9cb406fb1f73423c", confirmation_token: nil, remember_token: "907b9bd600246d0b8dcc06a782457665f614b368", created_at: "2012-03-21 20:59:44", updated_at: "2012-03-21 21:12:59", customername: nil> 

그래서 CUSTOMERNAME는 전무하다. 어떻게 든이 필드의 데이터가 데이터베이스에서 올바르게 추출되지 않습니다.

무엇이 잘못 되었나요?

죄송합니다, 저는 레일 초보입니다. 아주 간단한 일일 수도 있지만 하루 종일 인터넷 검색을 시도하고 작동하지 못해서 스택 오버플로의 지혜로 돌아 섰습니다. 감사합니다.

답변

1

사용자 모델에서 attr_accessor를 사용하는 대신 attr_accesible : customername을 사용하면 작동합니다. attr_accessible을 사용하지 않으면 데이터가 데이터베이스에 저장되지 않으므로 필드에 아무 값도 표시되지 않습니다.

0

sqlite 데이터베이스 브라우저를 사용할 때 올바른 데이터베이스를 편집 하시겠습니까? 그렇다면 별도의 도구를 사용하여 추가하고 도움이되는지 확인하기보다는 고객 생성 코드를 수정하여 고객 이름을 포함 시키십시오.

+0

이 시도 : thisUser = User.find (current_user.id) 이 thisUser.customername = "해리는" 내가이는 CUSTOMERNAME 여전히 내가 그것을 얻을 수 있었다 전무 – Etienne678

+0

이다 할 경우에도 thisUser.inspect 을두고 다른 인증 보석으로 끝났지 만 여전히 관심이있을 것입니다. – Etienne678

관련 문제