私はそれを持ってUser
いhas_many
messages
ます。クエリを作成する必要があります
'Get me all users who's (message.opened == false) count < 3'
現在、私は を使用しUser.all
、すべてのユーザーを繰り返し処理し、手動で数えています。これはあまり効率的ではなく、1 つのクエリですべて実行できることは理解していますが、SQL/ActiveRecord は初めてなので、ここで助けが必要です。ありがとう
私はそれを持ってUser
いhas_many
messages
ます。クエリを作成する必要があります
'Get me all users who's (message.opened == false) count < 3'
現在、私は を使用しUser.all
、すべてのユーザーを繰り返し処理し、手動で数えています。これはあまり効率的ではなく、1 つのクエリですべて実行できることは理解していますが、SQL/ActiveRecord は初めてなので、ここで助けが必要です。ありがとう
ここにあなたの問題の解決策があります
User.includes(:messages).group("users.id").where("messages.opened = 0").having("count(messages.id) < 3")
他にできることは、このためのスコープを作成することです
scope :not_opened_less_three_count, includes(:messages).group("users.id").where("messages.opened = 0").having("count(messages.id) < 3")
そして、次のように必要な場所ならどこでも使用できます
User.not_opened_less_three_count