2017-04-07 39 views
1
Subscriptions 
    canceled_at: ["2017-04-07T09:52:17-05:00", "2017-04-01T09:52:17-05:00"] 

Canceled_at是字符串数组。每个元素都是一个DateTime转换为一个字符串。如何在活动记录POSTGRES中使用BETWEEN搜索字符串数组,

以上是我的订阅表。我正在尝试查询并查找在给定的一周内有cancelled_at日期的记录。

date = Date.today 

Subscription.where("ANY subscriptions.canceled_at 
    BETWEEN '#{date.beginning_of_week(:sunday)}' 
    AND '#{date.end_of_week(:sunday)}'" 

红宝石2.3.1p112

回答

4
Subscription.where(canceled_at:(date.beginning_of_week(:sunday)..date.end_of_week(:sunday))) 

编辑:错过闭括号

+0

此接收到错误,如canceled_at是日期的阵列。 – tnaught

+0

未取消订阅表中的列吗?代码缺少最后一个括号。 – s1mpl3

+0

是的,它是子表上的一列。但它是一个数组。以上返回错误ActiveRecord :: StatementInvalid:PG :: InvalidTextRepresentation:错误:格式错误的数组文字:“2017-04-09” 细节:数组值必须以“{”或尺寸信息开头。 – tnaught