一个用户有许多身份。
class User < ActiveRecord::Base
has_many :identities
end
class Identity < ActiveRecord::Base
belongs_to :user
end
一个身份有一个confirmed:boolean
列。我想查询所有只有一个身份的用户。此身份必须还未被确认。
我已经尝试了以下方法:
User.joins(:identities).group("users.id").having( 'count(user_id) = 1').where(identities: { confirmed: false })
但是这会返回拥有一个身份验证为
confirmed:false
的用户,但是如果他们有确认为真的附加身份验证,则它也可能有附加身份。我只想要那些确认为假且没有已确认属性为真的附加身份的用户。我也尝试过这个方法,但很明显速度很慢,我正在寻找正确的SQL以便在一个查询中完成这个任务。
def self.new_users
users = User.joins(:identities).where(identities: { confirmed: false })
users.select { |user| user.identities.count == 1 }
end
提前道歉,如果已经有类似的帖子,我没有找到。
false
或true
?此外,您使用的是哪种DBMS(MySQL,PostgreSQL等),布尔值在数据库中如何存储?(0/1,“f” /“t”等) - Max Williams