1

私が使用Deviseしているのは、その確認オプションです。
ご存知のように、ユーザーが確認メールのリンクをクリックしない限り、ユーザーはアクティブ化されません。

ここでの問題は、まだ確認していないユーザーを含むすべてのメンバーが表示されることです。

@users = User.all はすべてのユーザーを取得します! 未確認のユーザーを含めたくありません。

まだ確認していない人を無視するテクニックはありますか?
User モデルに何かを追加するのがベストです!

私を助けてください:)

4

3 に答える 3

1

Devise はあなたに attribute を与えますconfirmed_at。以下を使用できます。

@user = User.where('confirmed_at IS NOT NULL')

そして、私が間違っていなければ、Devise は確認後、 Confirmation_token を NULL に設定して、再度使用できないようにするので、次のようにすることもできます。

@user = User.where('confirmation_token IS NULL')
于 2013-01-11T14:40:12.430 に答える
1

一貫したアクセスのために User モデルにスコープを追加することをお勧めします。

class User

  def self.unconfirmed
    where('users.confirmed_at is null')
  end

  def self.confirmed
    where('users.confirmed_at is not null')
  end

end

次に、コントローラー (または他のモデル) では、このリストに次のようにアクセスできます。

@users = User.confirmed

スコープの優れた点は、さらに連鎖できることです。

@unformed_males = User.confirmed.where(:sex => 'male').order(:height)

あなたはアイデアを得る;)

HTH

于 2013-01-11T14:54:58.570 に答える
0

Devise は、確認済み_at 列を users テーブルに追加します。したがって、次のように使用できます。

     @users = User.all(:conditions => ["confirmed_at is not null"])
于 2013-01-11T14:41:05.650 に答える