我想添加用户邀请朋友的功能。
应该生成电子邮件,以便在有人点击链接并注册时,该人自动成为朋友。
不确定选项是什么,但想要一些想法和策略作为从头开始构建它的替代方案。
答案 0 :(得分: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
您选择哪种方法取决于您想要追踪的目标。
答案 1 :(得分:1)
我不知道宝石的轨道。但Spree是一个基于轨道的电子商务项目的扩展。看看&amp;可能你可以参考它是如何实现的。
答案 2 :(得分:0)
我不知道有些宝石可以支持这一点,但解决方案应该是微不足道的。我猜您需要友谊模型,您可以在其中放置一些状态,如'waiting_for_approvment',并使用该友谊模型ID发送邮件链接。当用户接受任何一种方式时,您只需将状态更改为“已批准”或甚至“拒绝”,如果您也想跟踪它。
答案 3 :(得分:0)
首先定义关系:
class User < ActiveRecord::Base
has_and_belongs_to_many :friends, :class_name => "User", :join_table => "friends_users"
end
所以,用户与自己的名字不同。然后你可以使用以下内容:
@current_user.friends << @selected_user
在您的控制器中。