我试图在我的模型上执行此查询,但我无法弄清楚。
我有一个名为" array_of_dates"的日期数组,我是从另一个模型构建的:
array_of_dates = []
user.each do |user|
array_of_dates << user.birthday_date
end
我试过
Event.where("date in (?)", array_of_dates)
但是,来自Event的日期也有时间设置。我想忽略这里设定的时间,因为我只是在寻找这一天。我尝试将user.birthday_date解析为另一种格式,但我不知道如何更改&#34; date&#34;的格式。来自活动模型。
感谢您的帮助!
答案 0 :(得分:5)
使用date功能:
# if user's birthday_date column is date
Event.where("date(date) in (?)", User.pluck(:birthday_date))
# if user's birthday_date column is timestamp
Event.where("date(date) in (?)", User.select("date(birthday_date)"))
答案 1 :(得分:1)
首先通过将每个日期转换为涵盖整天的范围来转换array_of_dates
日期:
array_of_dates = array_of_dates.map {|date| date.beginning_of_day..date.end_of_day}
这会将每个日期转换为(Mon 27 Oct 2014 00:00:00..Mon 27 Oct 2014 23:59:59)
现在使用以下查询格式查找事件:
Event.where(date: array_of_dates)