0

我有一个模型projectuser,其中has_many activities, 和activities belongs_to projectuser. 现在我有@activities一个控制器中的活动集合,我想获得唯一的项目用户。我怎样才能做到这一点?

4

1 回答 1

2

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

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

但是,如果您的@activities对象是 ActiveRelation(关联调用或查询 api 调用的结果),您可以像这样进行更有效的查找:

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

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

于 2013-11-06T17:28:28.033 回答