1

ユーザーがアプリケーションに登録するための招待コード要件を追加したいと考えています。私はdeviseの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パラメーターがあります。

Invitation_limit: ユーザーが送信できる招待状の数。デフォルト値の nil は、ユーザーが必要な数の招待を送信できることを意味します。どのユーザーにも制限はなく、invitation_limit 列は使用されません。0 の設定は、招待状を送信できないことを意味します。設定 n > 0 は、n 回の招待状を送信できることを意味します。一部のユーザーのinvitation_limit列を変更して、グローバルinvitation_limit = 0であっても、送信する招待の数を増減できます。

ソースを見ると、このパラメーターがどのように使用されているかがわかります。1 つの重要な部分:

# 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 に答える