2011-03-21 2 views
1

사용자가 다른 사용자를 추천하고 혜택을받을 수있는 시스템을 만들고 있습니다. 현재 인증을 위해 Devise를 통해 생성 된 사용자 모델이 있습니다.계정 추천을위한 모델 디자인

추천 모델을 만드는 가장 좋은 방법은 무엇일까요? 리퍼러라는 모델을 추론 할

아이디 USER_ID 그러나

을 referrer_id, 기본 referred_id의 :

지금까지 내 테이블로 이런 일이있다. 어쨌든 추천 생성을 자동화합니까? 또한 다른 사람들이이 기능을 어떻게 구현했는지 궁금합니다.

답변

5

참조하는 사용자 만 저장해야하는 경우 다른 모델이 필요하지 않을 수도 있습니다. 그냥 다른 사용자 개체와 연관 :

class User < ActiveRecord::Base 
    belongs_to :referrer, :class_name => "User" 
end 

은 그냥 users 테이블에 referrer_id 열을 추가해야합니다.

+1

제안 해 주셔서 감사합니다. 또한 "승인 됨"이라는 또 다른 필드가 있습니다. 따라서 추가 데이터를 자체 모델로 분리하려고했습니다. 이것이 현명하다고 생각하십니까? 또는 단순히 다른 열을 추가 하시겠습니까? – redshift5

+0

미래에 더 많은 기능을 추가 할 계획이 있는지 여부에 달려 있다고 생각합니다. 개발 초기 단계에서 빠르게 움직 였다면'referrer_approved' 불린 컬럼을'users' 테이블에 추가하기 만하면됩니다. 이것이 가장 우아한 해결책은 아니지만 엄격히 말하자면, 시간을 절약하고 응용 프로그램의 핵심 부분이 아닌 경우 (소리가 나지 않는 경우)보다 실용적인 솔루션이 될 수 있습니다. 추천이 더 중요 해지면'refer_'_''','referenced_user_id' 등 원하는 컬럼을 가진'Referrer' 모델을 추가 할 수 있습니다. –

4

전체 모델이 필요하다고 생각하지 않습니다. 단지 다 대다 관계입니다. "referenced_by_user_id"라는 Users 클래스에 열을 추가 한 다음 User 모델에 다음을 추가하십시오.

belongs_to :referred_by, :class_name => "User", :foreign_key => "referred_by_user_id" 

has_many :referrals, :class_name => "User", :foreign_key => "referred_by_user_id"