![](/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.