在Ruby on Rails中为最后更改值创建范围

时间:2018-02-19 06:48:03

标签: ruby-on-rails ruby

我正在开发一款基于API的应用,例如每晚都会根据API主数据库更新我的数据库。

LastChangeTimestamp我正在为price_change_time创建范围,例如以下

scope :price_change_time, -> {where("LastChangeTimestamp BETWEEN ? AND ?", (Time.zone.now - 1.day).beginning_of_day, (Time.zone.now - 1.day).end_of_day)}

但这不起作用,并且错误如下。

  

ActiveRecord :: StatementInvalid:PG :: UndefinedColumn:ERROR:列“lastchangetimestamp”不存在

我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试在'LastChangeTimestamp'列上添加以下单引号,然后查询将显示为

scope :price_change_time, -> {where("'LastChangeTimestamp' BETWEEN ? AND ?", (Time.zone.now - 1.day).beginning_of_day, (Time.zone.now - 1.day).end_of_day)}

Rails默认情况下会在桌面上搜索lastchangetimestamp,但您的列名为LastChangeTimestamp,这就是为什么他没有认出LastChangeTimestamp

或者您可以将列重命名为lastchangetimestamplast_change_timestamp,并根据此查询范围更新。

希望有所帮助

答案 1 :(得分:0)

您可以使用rails query range operator '..'

scope :price_change_time, -> {where(LastChangeTimestamp: (Time.zone.now - 1.day).beginning_of_day..(Time.zone.now - 1.day).end_of_day)}