您始终可以创建一个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的添加一些验证,以确保比一个给定的用户尚未创建更多应该有和您可能需要的任何其他业务逻辑。
这个解决方案怎么样http://stackoverflow.com/a/3705462/816291?此外,您可以使用fiels电子邮件(如果您想通过邮件发送)和代码创建简单的模型邀请。代码将在创建新邀请的动作时随机生成..? :) – 2012-02-04 22:21:36