簡體   English   中英

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)

運作方式如下:

  1. 我們將兩次使用已發布項目的范圍,因此我們將其分配給變量以使其更具可讀性。
  2. 我們將項目按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

  3. 知道了ID后,我們在數據庫中查詢相應的項目,並將結果分配給@projects

如果您想學習一些更高級的技術,建議您看一下這個Stack Overflow問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM