2015-08-31 68 views
4

我需要在我的User模型上创建一个范围,该范例将获得其电子邮件属性包含在AdminUser模型电子邮件中的所有用户。ActiveRecord。查找按属性排列的所有记录的值

基本上,User模型中有一个称为email的属性,在AdminUser模型中有相同的属性。所以,我需要让所有实际上是管理员的用户(通过电子邮件)。

我没有实现这个作为一个劲儿地查询成功,并开始与获得的AdminUser邮件数组:

emails = AdminUser.pluck(:email) 

,现在我与得到管理员用户的阵列从User模型挣扎。

如果我写的是这样的:

User.find_by_email(emails) 

我得到的只是一个实体,而不是数组。


所以,我的问题:

如何创建一个范围,说admins,在User模型,将返回管理员的阵列?


BTW:某些其他目的,我有这个方法我User

def admin? 
    AdminUser.find_by(email: email) ? true : false 
    end 

的话,也许我可以以某种方式利用它在这种情况下?

回答

13

如果您在where子句中传递数组属性的值,它会做你想要什么。

@user = User.where(email: AdminUser.pluck(:email)) 
+0

真的吗?那简单?所以cooool –

+0

没有想到这一点。好一个:) – Pavan

4

查找器方法总是返回单个记录。您可以使用where

User.where(email: emails) 
相关问题