您应该使用
.includes。
从文档:
解决N + 1个查询问题
通过Active
Record,您可以预先指定要加载的所有关联。通过指定Model.find调用的include方法可以做到这一点。通过包含,Active
Record可确保使用尽可能少的查询数来加载所有指定的关联。再次讨论上述情况,我们可以重写Client.all以使用急切的加载地址:
clients = Client.includes(:address).limit(10)clients.each do |client| puts client.address.postpreend
或者,在您的情况下,
Comment.includes(:user)



