has_many关系中父级的唯一值

时间:2013-11-06 17:23:53

标签: ruby-on-rails

我的模型projectuser has_many activitiesactivities belongs_to projectuser。现在我在控制器中有一组@activities活动,我想获得独特的项目用户。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

它更有效的原因是因为它避免了构建一个id的文字列表,这会在db引擎上变得更加困难。

相关问题