Ell*_*iot 16 ruby ruby-on-rails ruby-on-rails-3
所以我正在尝试这样做:
today = Date.today - 1
todaysReport = Report.where(:created_at => today).find_by_user_id(user.id)
Run Code Online (Sandbox Code Playgroud)
问题是created_at是一个日期时间,因此它不会找到任何匹配项.任何建议?
Dex*_*Dex 22
你可能想要这样的东西:
yesterday = Time.now - 1.day
user = User.find(user_id)
todaysReport = user.reports.where(["created_at >= ? AND created_at <= ?", yesterday.beginning_of_day, yesterday.end_of_day])
Run Code Online (Sandbox Code Playgroud)
fbo*_*tti 14
在postgres中,您可以将时间戳转换为日期.例如:
Report.where("created_at::date = ?", Date.today - 1)
从PostgreSQL中的时间戳中提取日期(yyyy/mm/dd)
您需要与午夜到下一个范围进行比较.此外,这是制作自己的类方法以获得更高灵活性的良好候选者.
class Report
# All reports created on the specified Date
def self.created_on(date)
where(['created_at >= ? AND created_at < ?', date, date + 1])
end
end
# Find all reports created yesterday by our user
Report.created_on(Date.today - 1).where(:user_id => user.id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17210 次 |
| 最近记录: |