Chi*_*iya 3 activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
我只是想改进查询,以便提高应用程序的性能.
Student.includes(:parents =>:emails).where("emails.email_address is not null and emails.email_address != ''")
Run Code Online (Sandbox Code Playgroud)
我只是想使用电子邮件表满足条件,所以显然不需要eagerload电子邮件表,而是我更喜欢加入.但我无法弄清楚,如何使用包含和连接在一起?所以它应该加载父母并加入电子邮件
你通过将两者结合在一起来做到这一点:
Student.joins(parents: :emails).includes(:parents).where("emails.email_address is not null and emails.email_address != ''")
它的工作方式是在内存中joins创建一个JOIN但不是kep的任何数据,而在内存中includes预加载数据但不创建连接.
我建议阅读http://tomdallimore.com/blog/includes-vs-joins-in-rails-when-and-where/
| 归档时间: |
|
| 查看次数: |
3225 次 |
| 最近记录: |