设计邀请代码

时间:2012-12-29 13:54:06

标签: ruby-on-rails devise

我想为用户添加邀请码要求,以便在我的应用程序中注册。我调查了devise_invitable宝石的设计,这看起来很有希望。但是,不应该像人们一样继续邀请人们加入应用程序。

要解决这个问题,我需要在我的应用程序中植入用户级别。我在github上找到了this project,现在我得到了以下想法:一旦用户注册(由另一个现有用户邀请),它就从级别1开始,并且必须完成任务才能存档经验点。他按照他/她的方式上升到下一个级别,他可以邀请1个新成员,然后在下一个级别他可以邀请1个其他级别,在下一个级别,用户可以邀请2个成员,依此类推,等等。

我对Ruby很陌生,我想知道如何包含它并知道是否可以在我的用户控制器中插入。

感谢您阅读并度过美好的一天。

2 个答案:

答案 0 :(得分:2)

这应该是一个相当简单的过程,因为用户拥有的邀请数只是存储在数据库中的整数。它可能很简单:

def level_up(level)
  self.invitation_limit += level
  self.save
end

虽然这是一个非常简单的实现,但您只需传入用户级别,将其添加到当前的邀请数量中,然后保存用户。这一切都取决于你想要获得多少花哨,但它实际上归结为基本数学,并将其保存到数据库中。

答案 1 :(得分:0)

我不确定自2012年提出问题以来这是否有所改变,但是devise_invitable有一个invitation_limit参数:

  

invitation_limit:用户可以发送的邀请数量。默认值nil表示用户可以根据需要发送任意数量的邀请,对任何用户都没有限制,不使用invitation_limit列。设置为0表示他们无法发送邀请。设置n> 0表示他们可以发送n个邀请。您可以更改某些用户的invitation_limit列,以便他们可以发送更多或更少的邀请,即使全局invitation_limit = 0。

您可以通过查看来源here来了解如何使用此参数。一个重要的部分:

# Return true if this user has invitations left to send
def has_invitations_left?
  if self.class.invitation_limit.present?
    if invitation_limit
      return invitation_limit > 0
    else
      return self.class.invitation_limit > 0
    end
  else
    return true
  end
end