我正试图在我的控制器中做这样的事情:
@inventory_items = @store.inventory_items.where(:updated_at < Time.now - 1.minute)
我一直收到comparison of Symbol with Time failed
错误。
我试图在:updated_at
上调用to_datetime和to_date,但是那些只能用于字符串或整数?
如何将:updated_at
转换为正确的日期格式以与Time.now - 1.minute
进行比较?
提前致谢!
答案 0 :(得分:3)
嗯,有一些方法可以做到。
它不起作用的原因是因为符号只是指向列的指针,而不是列本身。
所以,要么你做
@inventory_items = @store.inventory_items.where(["updated_at < ?", Time.now - 1.minute])
或作为替代
@inventory_items = @store.inventory_items.where(["updated_at < :one_minute_ago", {one_minute_ago: Time.now - 1.minute]})
或者,你可以做到
@inventory_items = @store.inventory_items.where.not(:updated_at => Time.now - 1.minute..Time.now)
答案 1 :(得分:2)
我不认为使用哈希样式可以使用小于或大于检查。请尝试以下方法:
@inventory_items = @store.inventory_items.where('inventory_items.updated_at < ?', Time.now - 1.minute)
就“正确的日期格式”而言,您不必在此担心它们。默认情况下,所有数据库日期都转换为UTC。