簡體   English   中英

Rails-查找僅具有一個特定關聯的has_many或has_and_belongs_to_many記錄的記錄

[英]Rails - Find records with only one specific associated has_many or has_and_belongs_to_many record

我想知道如何僅使用一項特定的has_and_belongs_to_many項目查找記錄。

關聯如下:

class User < ActiveRecord::Base
  has_and_belongs_to_many :roles
end

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users
end

以下是我通常使用的內容。

User.includes(:roles).where(roles: {name: 'guest'})

這還不夠,因為我想查找僅具有角色guest所有用戶。 它不應獲取除guest以外還具有其他任何角色的記錄。

有人可以告訴我這里的路嗎? 理想情況下,該解決方案應與所有SQL數據庫類型(mysql,mariadb,postgres,sqlite)兼容

User.includes(:roles).where(roles: {name: 'guest'}).having("COUNT(roles.id)=1")

如果您不需要急於加載查詢,我也建議使用joins而不是includes

暫無
暫無

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

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