我想为用户添加邀请朋友的功能。
应该生成电子邮件,以便如果有人点击链接并注册,该人自动成为朋友。
不确定选项是什么,但想要一些想法和策略来替代从头开始构建它。
我想为用户添加邀请朋友的功能。
应该生成电子邮件,以便如果有人点击链接并注册,该人自动成为朋友。
不确定选项是什么,但想要一些想法和策略来替代从头开始构建它。
我不知道处理整个过程的任何宝石(用户>>电子邮件>>注册)。如果您只是想在用户来自特定链接时创建关系,请创建一个特殊的邀请路由(单独的控制器不是必需的,只是为了清楚起见):
# 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
您选择哪种方法取决于您想要追踪的内容。
我不知道导轨的宝石。但是 Spree 有一个扩展,基于 Rails 的电子商务项目。检查一下,也许你可以参考它是如何实现的。
首先定义关系:
class User < ActiveRecord::Base
has_and_belongs_to_many :friends, :class_name => "User", :join_table => "friends_users"
end
所以真的,用户用不同的名字与自己相关。然后,您可以使用以下内容:
@current_user.friends << @selected_user
在您的控制器中。
我不知道有什么宝石可以支持这一点,但解决方案应该相当简单。我想您需要友谊模型,您可以在其中放置一些状态,例如“waiting_for_approvment”,然后发送带有该友谊模型 ID 的邮件链接。当用户接受任何一种方式时,如果您也想跟踪它,您只需将状态更改为“已批准”甚至“拒绝”。