ruby-on-rails – Rails – 活动记录:查找所有具有与某些属性关
发布时间:2020-12-17 01:55:34 所属栏目:百科 来源:网络整理
导读:用户具有许多身份. class User ActiveRecord::Base has_many :identitiesendclass Identity ActiveRecord::Base belongs_to :userend 标识具有已确认的:布尔列.我想查询只有一个身份的所有用户.此身份也必须证实为假. 我试过这个 User.joins(:identities).g
用户具有许多身份.
class User < ActiveRecord::Base has_many :identities end class Identity < ActiveRecord::Base belongs_to :user end 标识具有已确认的:布尔列.我想查询只有一个身份的所有用户.此身份也必须证实为假. 我试过这个 User.joins(:identities).group("users.id").having( 'count(user_id) = 1').where(identities: { confirmed: false }) 但是这会返回一个身份已确认的用户:false但如果确认为true,他们也可以拥有其他身份.我只希望确认只有一个身份的用户:false,并且没有已确认属性为true的其他身份. 我也试过这个,但显然它很慢,而且我正在寻找合适的SQL来在一个查询中执行此操作. def self.new_users users = User.joins(:identities).where(identities: { confirmed: false }) users.select { |user| user.identities.count == 1 } end 如果已经回答了这个问题但是我找不到相似的帖子,请提前道歉. 解决方法def self.new_users joins(:identities).group("identities.user_id").having("count(identities.user_id) = 1").where(identities: {confirmed: false}).uniq end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |