如何在默认情况下仅将确认的用户设为有效用户?

时间:2013-01-11 14:30:31

标签: ruby-on-rails ruby-on-rails-3 devise

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

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

  

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

是否有任何技术可以忽略那些尚未确认的人? 在用户模型中添加内容将是最好的!

请帮帮我:)。

3 个答案:

答案 0 :(得分:1)

Devise将为您提供属性confirmed_at。您可以使用:

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

并且,如果我没有弄错,确认后Devise将confirmation_token设置为NULL以便它不能再次使用,所以你也可以这样做:

@user = User.where('confirmation_token IS NULL')

答案 1 :(得分: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)

你明白了;)

HTH

答案 2 :(得分:0)

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

     @users = User.all(:conditions => ["confirmed_at is not null"])