2012-06-21 1 views
0

질문이 있습니다. Devise 및 편지함은 아무 문제없이 내 레일 앱에 설치됩니다."unique_id"라는 새 열을 어떻게 추가하고 메일 함을 devise와 연결합니까?

문제는 "이메일"또는 "이름"열을 사용하여 기기 사용자를 우편함과 연결해야한다는 것입니다. 분명히 devise에는 Users 테이블에 "name"이라는 열이 없습니다. "전자 메일"을 사용하면 사용자는 숨길 다른 사람의 전자 메일 주소를 볼 수 있습니다.

트위터와 같은 등록을 원합니다. 변경되지 않는 unique_id (계정 이름)가 있습니다. 그걸 달성하려면 어떻게해야합니까?

I. 사용자 테이블에 "unique_id"라는 열을 추가 하시겠습니까? 명령 : 마이그레이션 파일을 작성하는 문자열 을 오픈이

class AddUniqueIdToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :unique_id, :string 
    add_index :users, :unique_id, :unique => true 
    end 
end 

II와 같은 편집 : g 마이그레이션 AddUniqueIdToUsers이 UNIQUE_ID 레일. "unique_id"열을 사용하여 devise를 우편함과 연관시키는 방법은 무엇입니까? 사전에

덕분에 분명히

+0

또는 사실 "user.id"열과 메일 함을 사용하여 장치를 연결하고 싶습니다. 왜냐하면 그것은 바뀌지 않을 것이기 때문입니다. "id"열을 사용하여 연결할 수있는 방법이 있습니까? – MKK

답변

2

는 열 사용자 테이블에서 "이름"이라고하지 않습니다 고안 전적으로 당신에게 달려

, 모든 고안이하는 (또는 당신이 원하는)는 어떻게 작동하는지 알려주는 몇 가지 레코드를 추가합니다. devise generator을 보면 마이그레이션에 몇 개의 열을 추가하는 것만 볼 수 있습니다.

트위터와 같은 등록을 원합니다. 그들은 결코 변경되지 않을 unique_id (계정 이름)을 가지고 있습니다. 그것을 성취하기 위해 어떻게 할 수 있습니까? 모든

첫째는, 고유 ID가 항상 레일에 무료로 당신에게 주어진다 (실제로, 데이터베이스 백엔드를 사용하는 가장 일반적인 웹 애플리케이션에서, 각 행은 고유 한 ID를 가지고).

, 당신은 또한 사용자가 사용자 이름을 선택하고 당신이 mailboxer readme states으로 할 수있는, 그뿐만 아니라 고유이 단순히과 같이, username처럼 자신의 데이터베이스 열이 name의 사용을 무시하려는 경우 :

당신이 mailboxer 설정 파일에서 유지하려는 경우
Mailboxer.setup do |config| 
    # ... 
    #Configures the methods needed by mailboxer 
    config.email_method = :email 
    config.name_method = :username 
    # ... 
end 

또는, 당신은 단순히 (사용자 이름 열이 주어진) alias_method를 사용하여이 작업을 수행 할 수 있습니다

class User < ActiveRecord::Base 
    alias_method :name, :username 
    acts_as_messageable 
end 

어느 쪽이든을, D를 고안 사용자 모델에서 어떤 열을 사용할 지 제한하지 않으며, Mailboxer는 사용자 모델에 보석을 연결하는 데 사용하는 열을 제한하지 않는 것처럼 보입니다. 따라서이 기능을 직접 구현하지 않고도 원하는만큼의 유연성을 확보 할 수 있습니다.

+0

아름다운 답변 주셔서 감사합니다! 물어볼 것이 두 가지 더 있습니다. 마이그레이션을 통해 '사용자'테이블에 '고유'사용자 이름 열을 추가해야합니까? 'unique_id'열을 코딩 한 것과 같습니다. 어떻게 등록 페이지에 쓸 수있는 '사용자 이름'열을 비워 둘 수 없으며 고유해야합니다. 감사! – MKK

+0

username 열에 대해서는 users 테이블에 고유 한 열을 만들 수 있습니다.이 경우 마이그레이션을 사용해야합니다. 등록 페이지에 관해서는 유효성 검사를 사용할 수 있습니다. http://guides.rubyonrails.org/active_record_validations_callbacks.html#presence – JeanMertz

+0

awesome! 감사!! – MKK

관련 문제