推荐计划 - cookie和更多(Rails)

时间:2011-03-16 11:19:55

标签: ruby-on-rails cookies referrals

我正在为我的Ruby on Rails应用程序构建推荐程序,以便用户可以共享包含其用户ID(app.com/?r=ID)的链接。如果访问者登陆应用的主页时存在推荐人ID,则主页上的注册表单包含一个隐藏字段,该字段填充了引荐者的ID。然后,如果被推荐的访客注册,则控制器检测ID并在推荐表中创建新的推荐。它有效,而且这是一大堆代码:

@referrer = User.find(params[:r]) rescue nil
unless @referrer.nil?
  @referral = Referral.new(:referrer_id=>@referrer.id)
end

非常简单的东西,但它很容易破解(例如:如果访问者离开主页,引用者ID就会丢失)。我觉得cookie可能是一种更健壮的方法,其中包含引用者ID的cookie存储在被推荐用户的计算机上x天。这是非常普遍的,特别是对于像Groupon这样的联盟计划,但我从未使用过cookie,也不知道从哪里开始。

此外,有没有什么好的方法来掩盖或更改推荐系统的URL?我不喜欢 app.com/?r=1842 ,而是喜欢 app.com/x39f3 < - 与给定用户关联的随机生成的数字序列,没有?r = 部分。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:11)

要回答cookie问题,可以很容易地设置它们:

cookies['app-referrer-id'] = params[:r]

然后它的格式相同(但没有分配)。我建议将此代码放在应用程序控制器的before_filter中。这样,无论访问者首次登陆您网站的页面如何,都会设置Cookie。

关于将网址结构更改为建议的格式,您需要使引荐代码与特定模式匹配,否则您可能会遇到路由问题。例如,如果它们匹配3个字母后跟三个数字的格式,您可以将以下路线文件放在:

match '/:referrer_id' => 'app#index', :constraints => {:referrer_id => /[a-zA-Z]{3}[0-9]{3}/}

对app#index的引用应更改为处理引用的控制器,您可以通过params [:referrer_id]访问referrer_id。

希望这有一些用处。

罗宾