![](/img/trans.png)
[英]How to show some posts options, only for the creator of the post in Rails
[英]Rails: How to show items only if creator is unique?
我有很多用户,每个用户都有多个项目。
现在,我只希望每个用户获得一件商品。
@projects = Project.all.where(user_id是唯一的)
仅当尚未从同一用户获取任何其他项目时,才应获取该项目。
希望我对我的问题很清楚。 我在Rails 5上。
编辑:
我在生产中使用了postgres。
您可能想做这样的事情。
Users.uniq.pluck(:projects)
您可以通过多种方式进行操作。 我建议以下代码作为起点:
projects_scope = Project.where(:status => "Published")
@projects = projects_scope.where(id: projects_scope.group(:user_id).maximum(:id).values)
运作方式如下:
我们将项目按user_id
分组,并使用maximum
来选择ID最高的项目(您可以使用minimum
或从组中选择一行的其他方法)。 更详细地:
一种。 projects_scope.group(:user_id).maximum(:id)
返回将用户ID映射到项目ID的Hash
。 例如{ 12 => 17, 14 => 3 }
表示对于用户12
我们选择项目17
,对于用户14
我们选择项目3
。 b。 我们仅对项目ID感兴趣,因此我们可以通过调用Hash#values
获取哈希中的Hash#values
。
知道了ID后,我们在数据库中查询相应的项目,并将结果分配给@projects
。
如果您想学习一些更高级的技术,建议您看一下这个Stack Overflow问题 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.