我有一个模型projectuser
,其中has_many
activities
, 和activities
belongs_to
projectuser
. 现在我有@activities
一个控制器中的活动集合,我想获得唯一的项目用户。我怎样才能做到这一点?
问问题
56 次
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 回答