我有一个用户模型和一个身份验证模型。一个User
has_many
Authentications
。
我想创建一个查询来检查所有具有名为“Facebook”的身份验证和名为“LinkedIn”的身份验证的用户。
我已经尝试加入两次,但这没有奏效:
User.joins(:authentications).
where(authentications: {provider: 'facebook'}).
joins(:authentications).
where(authentications: {provider: 'linkedin'})
它导致了以下查询。似乎删除了其中一个连接:
SELECT "users".* FROM "users" INNER JOIN "authentications"
ON "authentications"."user_id" = "users"."id"
WHERE "authentications"."provider" = 'facebook' AND "authentications"."provider" = 'linkedin'
编辑:
这对我有用,但是,我必须加入用户表两次,我不想这样做:
joins(authentications:{ user: :authentications }).where(authentications: {provider: 'facebook'}).where(authentications_users: {provider: 'linkedin'})