17

ユーザーがサインアップするために、invite_code 要件を追加したいと考えています。すなわち。電子メールとパスワードの組み合わせを指定する必要があることに加えて、追加のフィールド :invite_code が必要です。これは一時的な修正であり、不要なユーザーは特定のアルファ期間中にログインできなくなります。

Devise はコントローラを追加しないので、私は混乱しています。私は仮想属性の概念にある程度精通しており、モデルに :invite_code を追加してから、招待コードが 12345 に等しくなければならないというステップを今のところハードコードするだけでよいことに気づきました。

これはデバイス認証で意味がありますか? そして、適切なレールの安らかなアプローチからこれにどのようにアプローチしますか?

どうもありがとうございました。

4

3 に答える 3

24

1) 仮想属性には通常、ゲッターに加えてセッターが必要です。

最も簡単な方法は、追加することです

attr_accessor :invite_code
attr_accessible :invite_code # allow invite_code to be set via mass-assignment
    # See comment by James, below.

ユーザーモデルへ

2) Devise は User モデルの検証を望んでいると思います。したがって、追加することで検証を停止できます

validates_each :invite_code, :on => :create do |record, attr, value|
    record.errors.add attr, "Please enter correct invite code" unless
      value && value == "12345"
end

注: :on => :create を追加しました。invite_code は新しいユーザーの作成にのみ必要であり、更新には必要ないためです。

于 2010-09-14T00:57:57.010 に答える
9

これを試してください:http://github.com/scambra/devise_invitable

電子メールで招待状を送信するためのサポートを追加し(認証が必要)、パスワードを設定して招待状を受け入れます。

Devise> =4.0で動作します。devise3.0.xを使用する場合は、1.2.1以下を使用する必要があります。devise3.1.xを使用する場合は、1.3.2以下を使用する必要があります。devise>を使用する場合。 = 3.2、1.6.1以下を使用する必要があります...

于 2010-09-14T11:33:47.393 に答える
0

ドキュメントによると、invitable を使用すると、誰が他のユーザーを招待できるかを制御できます。の設定が「0」の場合、招待状を配布できませんinvitation_limit

ドキュメントから:

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

于 2017-09-07T15:47:28.083 に答える