1

我想为用户在我的应用程序中注册添加邀请码要求。我调查了devise_invitable gem 的设计,这看起来很有希望。但是,应该不可能像 devise_invitable 那样不断地邀请人们加入应用程序。

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

我对 Ruby 很陌生,我想知道如何实现这一点,并想知道这是否可以插入到我的用户控制器中。

感谢您阅读,祝您有美好的一天。

4

2 回答 2

2

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

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

虽然实现非常简单,但您只需传入用户级别,将其添加到他们当前的邀请数量中,然后保存用户。这完全取决于您想要获得的花哨程度,但这实际上归结为基本数学,并将其保存到数据库中。

于 2012-12-29T14:17:16.340 回答
0

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

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

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

# 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
于 2015-06-28T12:55:26.613 回答