[英]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.