【问题标题】:ActiveRecord. Find all records by attribute the values of which are included in array活动记录。按属性查找所有记录,其值包含在数组中
【发布时间】:2015-08-31 10:50:20
【问题描述】:

我需要在我的 User 模型上创建一个范围,它将获取其电子邮件属性包含在 AdminUser 模型的电子邮件中的所有用户。

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

我没有成功地将其实现为信号查询,并开始获取AdminUser 电子邮件数组:

emails = AdminUser.pluck(:email)

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

如果我这样写:

User.find_by_email(emails)

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


所以,我的问题:

如何在User 模型上创建一个范围,例如admins,以返回管理员数组?


顺便说一句:出于某些其他目的,我的User 中有此方法:

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

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

【问题讨论】:

    标签: ruby-on-rails-4 activerecord


    【解决方案1】:

    如果你将数组传递给 where 子句中的属性值,它会做你想做的事。

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

    【讨论】:

    • 真的吗?这么简单?太酷了
    • 没想到这个。好一个:)
    【解决方案2】:

    finder 方法总是返回一条记录。你可以使用where

    User.where(email: emails)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2016-02-19
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      相关资源
      最近更新 更多