ActiveRecord的。按属性查找所有记录,其值包含在数组中

时间:2015-08-31 10:50:20

标签: ruby-on-rails-4 activerecord

我需要在我的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

所以,也许我可以在这种情况下以某种方式使用它?

2 个答案:

答案 0 :(得分:16)

如果将数组传递给where子句中属性的值,它将执行您想要的操作。

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

答案 1 :(得分:5)

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

User.where(email: emails)