从belongs_to关联中获取的属性构建列表



活动记录忍者,

我正在寻找一种简洁的 Rails 方法来从关联的模型中获取属性。

class Team < ActiveRecord::Base
  belongs_to :captain, class_name: User

获取与团队相关联的独特队长阵列:

Team.all.map(&:captain_id).uniq

我想做的是拿那个独特的船长名单,抓住每个人的first_namelast_name

我想做

Team.all.map(&:captain_id).uniq.pluck(:first_name, :last_name)

但是pluck不适用于数组。我可以通过几个步骤做到这一点,但是Rails的方式是什么?

您可以执行以下操作:

captain_ids = Team.all.select(:captain_id)
User.where(id: captain_ids).pluck(:first_name, :last_name)

轨道应该足够智能,可以进行嵌套选择。

另一种选择是 joins ,它可以更高效(更快(,但在我的测试用例中,子选择比 INNER JOIN 快 3 倍。自己尝试一下:)

您可以使用

joinsgroup

Team.joins(:captain)
    .group("users.id")
    .pluck("users.first_name", "users.last_name")

相关内容

  • 没有找到相关文章

最新更新