我在这里遇到了SQL问题:
tab = ["medium", "good", "excellent", "mother_tongue"]
users = User.joins(:spoken_languages).where("language = 'FR' and level in (?)", tab).count
SELECT COUNT(*) 来自"用户" INNER JOIN"口语_语言" ON" spoken_languages"。" languageable_id" ="用户"。" id" AND" spoken_languages"。" languageable_type" ='用户' 在哪里(语言=' FR'和级别(' medium',' good',' excellent',' mother_tongue' ;))
users.joins(:spoken_languages).where("language = 'NL' and level in (?)", tab)
SELECT COUNT(*) 来自"用户" INNER JOIN"口语_语言" ON" spoken_languages"。" languageable_id" ="用户"。" id" AND" spoken_languages"。" languageable_type" ="用户" 在哪里(语言=' FR'和级别(' medium',' good',' excellent',' mother_tongue' ;)) AND(语言=' NL'和级别('媒体','良好','优秀'' mother_tongue' ;))
我不希望rails同时检查此列,而是单独检查。
首先检查具有所需级别的法国用户,然后在此列表中使用所需列表的荷兰用户
此处,rails正在寻找具有语言记录的用户' FR'和' NL'。语言记录只是NL或FR而不是两者。