2013-01-11 25 views
1

我正在使用Devise及其确认选项。
如您所知,用户将不会被激活,除非用户点击确认邮件中的链接。我如何才能使默认用户成为有效用户?

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

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

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

请帮我:)

回答

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

+0

谢谢你,但是你的代码是取未经确认的用户。我想对面。我如何排除它? – cat

+0

你可以做相反的事吗?请命名它确认! – cat

+0

编辑答案:)。对不起,没有更好地阅读你的问题:( – Nazar

1

设计会给你的属性confirmed_at。您可以使用:

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

而且,如果我没有记错的话,确认后制定设置confirmation_token为NULL,使其不能再次使用,所以你也可以这样做:

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

设计添加confirmed_at列到您的用户表。所以,你可以使用如下:

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

不,这是老梁2语法。改为使用'User.where'。 – weltschmerz

+0

他没有提到任何版本。我的回答也是正确的。你为什么拒绝投票 – codeit

+0

如果用户没有提到任何版本,我特别鼓励你使用最新的语法。但是没有人说如果你改正了,我不会再鼓掌了;-) – weltschmerz