加入两个具有不同关系的表

时间:2016-08-22 17:12:32

标签: sql ruby-on-rails activerecord

我正在为Rails应用程序开发报告功能,用户可以联系办公室中的人员。每次联系尝试都属于办公室。如果联系尝试成功,那么它也属于办公室中的人。

棘手的部分是当我尝试按日期范围过滤报告时。我想查询在日期范围内联系过的所有办事处,以及在该日期范围内联系的办事处中的所有人员,但不查询那些在该范围内未联系的办事处的人员。换句话说,如果办公室里有两个人,并且有一个人在该范围内联系过,而且一个人没有,我只想包括那个在该范围内联系的人。

我可以轻松获得特定日期范围内办公室的所有联系尝试:

Office.
  joins(:contact_attempts).
  where(contact_attempts: {created_at: @from_date..@to_date})

但是当我遍历办公室里的人时,如果其中一个人在日期范围内被联系而另一个人没有被联系,那么它将包括他们两个。

我试图过滤掉所有未受影响的人:

Office.
  joins(:contact_attempts).
  where(contact_attempts: {created_at: @from_date..@to_date}).
  joins(people: :contact_attempts)

但实际上并没有改变结果。所以我试过了:

Office.
  joins(:contact_attempts).
  where(contact_attempts: {created_at: @from_date..@to_date}).
  joins(people: :contact_attempts).
  where(people: {contact_attempts: {created_at: @from_date..@to_date}})

但这给了我Unknown column 'people.contact_attempts'

提前感谢您的帮助!

0 个答案:

没有答案