我正在做一个项目,我需要根据 where 子句下的关联模型的数量来确定模型的范围。这是我能想到的最好的:
Subscription.where('message_cap > ?', TextMessage.where('created_at > ?', DateTime.now.beginning_of_month).where(subscription: subscription).count)
但是,它不起作用,因为订阅未定义。在rails查询中有什么方法可以引用postgres当前命中的模型吗?我认为这是我正在寻找的 SQL:
SELECT * FROM 'subscriptions' WHERE 'subscription.message_cap' > (SELECT COUNT(*) FROM 'text_messages' WHERE 'text_messages.subscription_id' = 'subscription.id' AND 'text_message.created_at > BEGINNINGOFMONTH')
这是我的应用程序的一个非常非常关键的性能部分,所以如果可以的话,我需要它在一个查询中运行。
编辑
顺便说一句,我不确定上面的 SQL 查询是否有效。我只是把它放在那里传达我正在寻找的想法。