我有一个“Job”模块(以及db中的相应表),该模块有一个名为scheduled_run(datetime)的字段和一个名为user_id的字段:
答案 0 :(得分:1)
类似的东西:
Job.where(:user_id => some_user_id, :scheduled_run => Date.today).all
要查找上周的内容,您需要指定日期范围。我会让你弄明白这一部分。您需要使用ActiveRecord指南中提到的“范围条件”或“子集条件”。
Rails ActiveRecord Guide很好看。另请参阅ActiveRecord doc。
中的“条件”部分答案 1 :(得分:1)
要获取属于某个用户且计划今天完成的所有作业,您需要在今天的时间段内搜索所有scheduled_runs:
user = User.find(1) # Will get the user with ID 1
jobs = Job.where("user_id = :id AND scheduled_run >= :start AND scheduled_run < :end",
:id => user.id,
:start => Date.today,
:end => 1.day.from_now.to_date)
要获得上周的所有工作,我们会执行类似的命令,但我们会将:start
和:end
切换为本周的开始和结束:
user = User.find(1) # Will get the user with ID 1
jobs = Job.where("user_id = :id AND scheduled_run >= :start AND scheduled_run < :end",
:id => user.id,
:start => 1.week.ago.to_date,
:end => Date.today)
在上述两个命令中,to_date
会导致ActiveRecord
将结果DateTime
视为当天的开头。
答案 2 :(得分:0)
它是纯粹的红宝石还是你使用rails或其他ORM /框架? 我会假设,因为问号标记为activerecord
可以这样做:
Job.where("user_id = ? AND datetime = ?", user_id, datetime).all
这里的Rails文档中更多http://api.rubyonrails.org/classes/ActiveRecord/Base.html
你也可以使用日期范围,只需在文档周围挖掘一下;)