2011-12-01 4 views
0

친구에게 고객 URL을 초대 할 수있는 기능을 구축하려고합니다. 내 사용자 모델에 열을 추가하여 사용자가 가입 할 때 링크가 공유 될 때 다시 추적 할 고유 토큰을 제공합니다.초대 친구 링크 설정

User.rb :

www.nameofsite.com/r/[referer_url]

: 나는 다음 URL을 친구에게 초대장을 보내드립니다 우편물을 설정

def set_referer_url 
    begin 
    self.referer_url = rand(36**8).to_s(36) 
    end while User.exists?(:referer_url => self.referer_url) 
end 

다음과 같이

나는 경로를 설정 한 :

match '/r/:referer_token' => 'users#new' 

내 사용자 모델에 referer라는 열이 있습니다.이 열은 사용자가 다른 사용자의 초대 링크를 통해 가입했는지 기록하고 싶습니다. 그렇다면, referer 열은 그들을 참조한 사람의 사용자 ID를 지정해야합니다.

내가 가진하여 sign_up보기 위해 다음 내 사용자 모델에서

<%= form_for @user, :as => :user, :url => {:controller => "users", :action => "create" } do |f| %> 
    <%= f.hidden_field :referer_token %> 

    <p> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
    ... 

나는 새로운 사용자에게 리퍼러 ID를 할당하려고 시도하는 다음과 같은 한 :

def referer_token 
    User.referer_url if user 
end 

def referer_token=(token) 
    self.referer = User.find_by_referer_url(token).id 
end 

attr_accessible :email, :password, :password_confirmation, :referer_token 

URL을 통해 리퍼러의 ID를 찾아서 새로운 사용자를위한 referer. 이것은 일어나지 않는 것 같습니다. referer_token의 매개 변수가 양식을 통과하고 있다고 생각하지 않아서 referer의 ID를 저장할 수 있습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

나는 야를 당신이 setter에서'referer_url'라는 속성 이름을 사용하는 이유에 대해 혼란 스럽지만'attr_accessible'리스트에'referer_token'을 가지고 있습니다. 또한 Firebug 또는 Chrome에 내장 된 "Inspect Element"도구를 사용하여 숨겨진 필드를 살펴 보았습니까? – iwasrobbed

+0

Alex

+0

리퍼러 토큰이 제출하지 않는 것 같습니다. 나는 일단 양식이 제출되면 제대로 받아들이지 않을지 말할 수 없습니다. – Alex

답변

1

당신이 가까이있어,하지만 난 컨트롤러에 연결을하고 모델의 관계를 정의 아마 것 : 그런 다음

# models/user 
class User < ActiveRecord::Base 
    belongs_to :referrer, :class_name => 'User' 
    # you'll need a referrer_id on your users table 
end 

# views/users/new 
<%= form_for(@user) do |f| %> 
    <%= hidden_field_tag :referrer_token, params[:referrer_token] %> 
    ... 

# controllers/users_controller 
class UsersController < ApplicationController 
    @user = User.new(params[:user]) 
    @user.referrer = User.find_by_referrer_url(params[:referrer_token]) 
    @user.save 
end 

당신이 할 수 있습니다

@user.referrer => #<User id: 114... 
관련 문제