我试图使用has_many:through关系中的值来检索Authors列表,但我的逻辑失败了。
实现这一目标的最佳方法是什么
当前正在尝试此操作,但未成功
start_date = '01/01/0001'.to_date.beginning_of_day
end_date = '01/01/2020'.to_date.end_of_day
Author.includes(:books).where("date(books.release_date) BETWEEN ? AND ?", start_date, end_date)
我可以使用以下命令只检索书籍
Book.where("date(release_date) BETWEEN ? AND ?", start_date, end_date)
但要使上面的查询正常工作
1条答案
按热度按时间0md85ypi1#
您的查询可能会失败,因为您使用的是带有SQL字符串片段的
includes
。Rails不会使用SQL字符串推断includes
上的任何关联,因此引用必须结合使用:或者,您可以使用查询DSL构造相同的where子句,Rails将能够推断出关联:
如果您只是尝试过滤到
author
列表,而根本不需要book
,我建议使用子查询: