I am wondering how to find records with only one specific
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
User.includes(:roles).where(roles: {name: 'guest'}).having("COUNT(roles.id)=1")
I also would recommend to use joins
instead of includes
if you don't need to eager load the query.