2011-01-07 9 views
3

ユーザーが友だちを招待する機能を追加したいと思います。レールに「友人を招待」するのに役立つプラグインや宝石はありますか?

誰かがリンクをクリックして登録すると、その人は自動的に友人になるように電子メールを生成する必要があります。

オプションが何であるかはわかりませんが、最初から構築する代わりに、いくつかのアイデアや戦略が必要でした。

+0

どの認証宝石を使用していますか?その中には、招待状を処理するための機能やプラグインが組み込まれているものがあります。 – vonconrad

+0

ああ、どちらか?私は使用していると思っていますが、通常はauthlogic – Angela

答えて

0

これをサポートするための宝石についてはわかりませんが、解決策はほんの些細なものでなければなりません。私はあなたが友情モデルが必要だと思う、あなたは 'waiting_for_approvment'のようなそれにいくつかのステータスを配置し、その友情モデルIDとのメールリンクで送信することができます。ユーザーがいずれかの方法を受け入れると、ステータスを「承認済み」に変更するか、「却下済み」に変更するだけです。

+0

を使用しています。友達にして友情モデルに固有のリンクを生成する必要があります..... acts_as_inviteableタイプのソリューションが必要なようです – Angela

2

私はプロセス全体を処理する宝石(ユーザー>>電子メール>>サインアップ)は認識していません。あなただけは、ユーザーが特定のリンクから来るときの関係を作るために探している場合は、特別招待ルートを作成します(個別のコントローラが必要ではありませんが、ちょうどそれを明確にするために):

# routes.rb 
match '/invite/:friend_id' => 'public#invite', :as => :invite 

# PublicController 
def invite 
    session[:referring_friend] = params[:friend_id] 
    redirect_to root_path 
end 

# UsersController 
def create 
    @user = User.new(params[:user]) 
    if @user.save 
    @user.create_friendship(session[:referring_friend]) if session[:referring_friend] 
    ... 
    else 
    ... 
    end 
end 

の場合あなたは、私がリンクモデルを作成し、それをクリックしてサインアップを追跡するために使用することをお勧めしたい、コンバージョン指標を追跡する:あなたが道を追跡したいと思うものに依存選ぶ方法

class Link < ActiveRecord::Base 

    belongs_to :user 
    attr_accessible :user, :user_id, :clicks, :conversions 

    def click! 
    self.class.increment_count(:clicks, self.id) 
    end 

    def convert! 
    self.class.increment_count(:conversions, self.id) 
    end 

end 

# routes.rb 
match '/invite/:link_id' => 'links#hit', :as => :invite 

# LinksController 
def hit 
    link = Link.find(params[:link_id]) 
    link.click! 
    session[:referring_link_id] = link.id 
    redirect_to root_path # or whatever path (maybe provided by link...) 
end 

# UsersController 
def create 
    @user = User.new(params[:user]) 
    if @user.save 
    if session[:referring_link_id] 
     link = Link.find(session[:referring_link_id]) 
     link.convert! 
     @user.create_friendship(link.user_id) 
    end 
    ... 
    else 
    ... 
    end 
end 

+0

ありがとう---私は、電子メールとサインアップの部分を少なくともした電子メールを望んでいました...私はどこにこの電子メールを入れますか? – Angela

+0

あなたはuser.rbでafter_createコールバックを使用して、ユーザーのウェルカムメールを送信します。友情が作成されたときに電子メールを送信する場合は、友情モデルにafter_createコールバックを追加するだけです。友人関係モデルを構築するのではなく、単にリファラーへの参照を保持するのであれば、create_friendship()メソッドでメールを送信するだけです。 – mnelson

+0

このシナリオでは、工夫の上で招待できますか? – Angela

1

レール用の宝石はありません。しかし、レールベースの電子商取引プロジェクトであるSpreeの拡張があります。おそらくあなたはそれがどのように実装されているか参照することができます&をチェックしてください。

https://github.com/spree/spree_email_to_friend

0

スタートの関係を定義することによって:

class User < ActiveRecord::Base 
has_and_belongs_to_many :friends, :class_name => "User", :join_table => "friends_users" 
end 

だから本当に、ユーザーは別の名前で自分自身にも関します。次に、あなたのコントローラに何かを使うことができます:

@current_user.friends << @selected_user 

関連する問題