has_many关系中父级的唯一值



我有一个模型projectuserhas_many activitiesactivities belongs_to projectuser 。现在,我在控制器中@activities了一组活动,我想获得唯一的项目用户。我该怎么做?

如果@activities是一个简单的 ruby 集合(例如 Array),那么使用这个:

Projectuser.where(id: @activities.map(&:projectuser_id).uniq)

但是,如果@activities对象是 ActiveRelations(关联调用或查询 api 调用的结果),则可以执行更有效的查找,如下所示:

Projectuser.joins(:activities).merge(@activities)

它更高效的原因是因为它避免了构建 id 的文字列表,当数据库引擎变大时,这可能会变得更加困难。

最新更新