2012-02-04 103 views
1

我已经看到了一些很棒的资源,用于创建邀请系统,其中应用程序发送包含受邀用户电子邮件链接的电子邮件邀请,如devise_invitable。Beta邀请代码Rails

我想弄清楚的是如何生成一串邀请码,以便我可以将它们发给特定的人,然后他们可以使用该邀请码进行注册。我对我会做什么有一些想法,但我想知道如果任何人都遇到过这种情况,并有一些尝试和真正的方法。

我正在使用devise进行身份验证。

任何帮助,非常感谢。

+0

这个解决方案怎么样http://stackoverflow.com/a/3705462/816291?此外,您可以使用fiels电子邮件(如果您想通过邮件发送)和代码创建简单的模型邀请。代码将在创建新邀请的动作时随机生成..? :) – 2012-02-04 22:21:36

回答

1

您始终可以创建一个InviteCode模型,其中包含一个随机生成的可兑换代码,可以根据需要随时生成并在稍后的时间点进行验证。

例如:

class User < ActiveRecord::Base 
    has_one :invite_code_used, 
    :class_name => 'InviteCode', 
    :foreign_key => 'user_redeemer_id' 

    has_many :invite_codes, 
    :foreign_key => 'user_creator_id' 
end 

class InviteCode < ActiveRecord::Base 
    belongs_to :user_creator, 
    :class_name => 'User', 
    :foreign_key => 'user_creator_id' 

    belongs_to :user_redeemer, 
    :class_name => 'User', 
    :foreign_key => 'user_redeemer_id' 
end 

你会创建一个随机生成的字符串作为邀请码使用,大概地方,比如before_validation,以确保它在保存之前填充。当代码被兑换时,将代码链接到创建的用户,以便您可以看到谁实际声明了它。

创建用户的邀请码是这样的简单:

@invite_code = @user.invite_codes.create(:email => '[email protected]') 

您可以创建一个InviteCode的添加一些验证,以确保比一个给定的用户尚未创建更多应该有和您可能需要的任何其他业务逻辑。