【发布时间】:2021-10-02 15:54:42
【问题描述】:
我有以下表格:
class Contract
has_many :working_days
end
Class WorkingDay
belongs_to :contract
end
working_days 表有一个date 字段。
我还有一个日期数组,例如:
dates_array = [Date.today, Date.today + 1.week, Date.today + 2.weeks, Date.today + 3.weeks, Date.today + 4.weeks]
如何尽可能快地在一个 Activerecord 或 SQL 查询中返回在dates 数组中的所有个日期都有工作日的所有合同?
我希望它尽可能快,所以我不想循环遍历日期数组并运行多个查询。
如果可以从dates_array 中map 一个SQL 查询可以在Activerecord 查询中运行,那就没问题了。比如:
Contract.joins(:working_days).where(working_days: dates_array.map { |date| "('date=?','#{date}') #{'OR' unless date == dates_array.last}" }.join(''))
但是这段代码不起作用,到目前为止,除了循环遍历日期数组(太慢)之外,我还没有想出任何可行的方法。
在一个查询中,有谁知道我如何返回日期数组中所有个工作日的所有合同?
感谢任何可以提供帮助的人!
【问题讨论】:
标签: mysql sql ruby-on-rails activerecord rails-activerecord