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

Den*_*nko 5 activerecord ruby-on-rails-4

我需要在我的User模型上创建一个范围,以便将所有用户的电子邮件属性包含在AdminUser模型的电子邮件中.

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

我没有成功实现这个作为一个签名查询,并开始获取AdminUser电子邮件数组:

emails = AdminUser.pluck(:email)
Run Code Online (Sandbox Code Playgroud)

现在我正在努力从User模型中获取管理员用户数组.

如果我写这样的东西:

User.find_by_email(emails)
Run Code Online (Sandbox Code Playgroud)

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


所以,我的问题:

我怎样才能adminsUser将返回管理员数组的模型上创建一个范围?


BTW:出于其他目的,我在我的方法中使用了这种方法User:

  def admin?
    AdminUser.find_by(email: email) ? true : false
  end
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*zyn 18

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

@user = User.where(email: AdminUser.pluck(:email))
Run Code Online (Sandbox Code Playgroud)


Pav*_*van 5

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

User.where(email: emails)
Run Code Online (Sandbox Code Playgroud)