我有一个模型projectuser
它has_many
activities
,activities
belongs_to
projectuser
。现在,我在控制器中@activities
了一组活动,我想获得唯一的项目用户。我该怎么做?
如果@activities
是一个简单的 ruby 集合(例如 Array),那么使用这个:
Projectuser.where(id: @activities.map(&:projectuser_id).uniq)
但是,如果@activities
对象是 ActiveRelations(关联调用或查询 api 调用的结果),则可以执行更有效的查找,如下所示:
Projectuser.joins(:activities).merge(@activities)
它更高效的原因是因为它避免了构建 id 的文字列表,当数据库引擎变大时,这可能会变得更加困难。