У меня есть сценарий, в котором для элемента я записываю даты, когда он был 'active_at', в массив, хранящийся в столбце JSONB.
Таким образом, данные будут выглядеть примерно так:
active_at:
{"dates"=>
["2018-07-22",
"2018-09-05",
"2018-09-06",
"2018-09-07",
"2018-09-14",
"2018-09-15",
"2018-09-16",
"2018-10-20",
"2018-10-21",
"2018-10-30"]}
Я могу успешно запросить следующий столбец для совпадения даты в массиве:
@item = Item.where('active_at @> ?', {dates: '2018-10-20'.split}.to_json)
Однако теперь мне нужно иметь возможность запрашивать совпадение только для первой записи в массиве. Записи в массиве всегда располагаются в порядке дат, так как новые значения добавляются в конец массива.
Я пробовал подобные вещи, но без радости:
@item = Item.where('active_at @> ?', {dates['first']: '2018-10-20'.split}.to_json)
@item = Item.where('active_at @> ?', {dates.first: '2018-10-20'.split}.to_json)