1

我正在使用Devise它的确认选项。
如您所知,除非用户单击确认邮件中的链接,否则不会激活用户。

我这里的问题是,我们可以看到包括尚未确认的用户在内的所有成员!

@users = User.all 将获取所有用户!我不想包括未经确认的用户。

有什么技巧可以忽略那些尚未确认的人吗?
在用户模型中添加一些东西将是最好的!

请帮我:)

4

3 回答 3

1

设计会给你属性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

我建议为您的用户模型添加一个范围以实现一致的访问:

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)

你明白了;)

高温高压

于 2013-01-11T14:54:58.570 回答
0

Devise 将 Confirmed_at 列添加到您的用户表中。所以你可以使用如下:

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