我需要在我的User
模型上创建一个范围,以便将其电子邮件属性包含在AdminUser
模型的电子邮件中的所有用户。
基本上,email
模型中有一个名为User
的属性,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
所以,也许我可以在这种情况下以某种方式使用它?
答案 0 :(得分:16)
如果将数组传递给where子句中属性的值,它将执行您想要的操作。
@user = User.where(email: AdminUser.pluck(:email))
答案 1 :(得分:5)
finder方法总是返回单个记录。您可以使用where
User.where(email: emails)