2012-05-12 3 views
0

레일즈 3에서 ActiveRecord를 사용하여 페이스 북 사용자를 모델링하는 가장 좋은 방법은 무엇입니까? id 필드가 자동으로 만들어지면 어떻게 auto_increment를 없애고 각 사용자의 fb_id로 채울 수 있습니까? Facebook에서 요구하는 더 큰 값을 저장할 수 있도록 유형을 int로 변경해야합니다.레일즈 3 페이스 북 사용자 모델?

아무에게도 이것을하는 사실상의 방법이 있습니까? 이것이 꽤 일반적인 구현이어야한다고 생각하니?

답변

1

당신은이 같은 기본 차 필드 (ID) 재정의 할 수 있습니다 : 모델의 다음

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users, :primary_key => 'facebook_id' do |t| 
     t.string :name 

     t.timestamps 
    end 
    end 
end 

:

class User < ActiveRecord::Base 
    self.primary_key = "facebook_id" 
end 

편집 : 그러나, 당신이 정말로 ID를 제거해야하나요을 들? 기회가 필요할 때가 있습니다. 당신이 (페이스 북과 같은) 제 3 자 인증 솔루션을 찾고 있다면 또한, OmniAuth 사용을 고려해야합니다 : https://github.com/intridea/omniauth

+0

방금 ​​고정 된 코드로 답변을 업데이트했습니다. – Agis

1

나는 다음과 같은 레일에서 제공하는 기본 ID를 가진, 그리고 계속 추가하는 것이 좋습니다 것입니다 :

class AddUIDandProviderandTokenToUsers < ActiveRecord::Migration 
    def up 
    add_column :users, :UID, :string 
    add_column :users, :provider, :string 
    add_column :users, :token, :string 
    end 

    def down 
    # 
    end 
end 

이렇게하면 Facebook에 의존하지 않고 다른 외부 인증 시스템을 사용자 테이블에 추가 할 수 있습니다.

UID을 문자열로 저장하십시오.