2016-08-21 9 views
0

ユーザーがオフィスにいる人に連絡を取るRailsアプリケーションのレポート機能に取り組んでいます。オフィスには多くの人がいて、人には多くの人がいます。ネストされた関係にフィルタが含まれています

日付範囲内で連絡を受けたすべてのオフィスと、その日付範囲で連絡を受けたすべてのオフィスのユーザーを照会したいが、その範囲内で連絡を受けていないオフィス内のユーザーは照会しない。言い換えれば、オフィスに2人の人がいて、1人がその範囲内で接触し、1人が接触していない場合、その範囲内で接触した人を含めることだけです。

問合せは、私はこのようなルックスを書き始めた:

Office.includes(:contacts, :people).where('contacts.created_at >= ? AND contacts.created_at <= ?', @from_date, @to_date) 

しかし、これは、連絡先、ない人をフィルタリングします。

Office.includes(:contacts, :people).where('people.contacts.created_at >= ? AND people.contacts.created_at <= ?', @from_date, @to_date) 

しかし、それは私には全く理にかなってUnknown column 'voters.call_attempts.created_at'を与える:そして、私はこれを試してみました。今どこから行くのかわからない。

アドバイスはありがとうございます!前もって感謝します。

答えて

1

私はあなたが非常に近いと思う - あなたが記述した関連性に基づいて、includesステートメントをちょっと変えることができるはずです。 includes(:contacts, :people)の代わりにincludes(people: :contacts)を試してください。これにより、すべての連絡先が人によって取得されます。あなたはオフィスと連絡先の間に多くの関係を持っていることをセットアップしている場合は、ちょうどincludes(:contacts)にすることさえできるかもしれません。

+0

これは機能します!ありがとうございました! – michael

関連する問題