Запрос к полю массива Postgres JSON в Rails

Я пытаюсь запросить определенное значение в базе данных Postgres. У меня есть поле с именемgroups вusers Таблица, которая может быть представлена ​​одним из следующих способов:

1.

groups: {"data"=>[{"serie"=>5, "year"=>3, "specialization"=>"Matematica", "management_id"=>1, "group_number"=>2}, {"serie"=>5, "year"=>3, "specialization"=>"Matematica", "management_id"=>1, "group_number"=>2}]}

2.

groups: [{"serie"=>5, "year"=>3, "specialization"=>"Matematica", "management_id"=>1, "group_number"=>2}, {"serie"=>5, "year"=>3, "specialization"=>"Matematica", "management_id"=>1, "group_number"=>2}]

Я в порядке с любым из этих представлений. Однако я просто не могу понять, как получить всех пользователей, которые находятся в серии 5, скажем так. Я пробовал несколько запросов в соответствии с:

@users = User.where("groups ->> 'data' @>  ?", {serie: 5})
@users = User.where("groups -> 'data' @>  '?'", {serie: 5})
@users = User.where("groups ->> 'data' ->> 'serie' = ?", 5)

И многие другие попытки, некоторые более глупые, чем другие (см. Выше). Как бы я это сделал?

Я смог определить, что:

select groups -> 'data' ->> 'serie' from users;  
ERROR: cannot extract field from a non-object.

Однако работает следующий запрос:

select json_array_elements(groups -> 'data') ->> 'serie' from users;

Я думаю, что я не правильно доставляю данные в столбце. Хеш, который я предоставляю для создания:

pry(#<Overrides::RegistrationsController>)> @response['data']['user']
=> {"last_name"=>"Doe1",
 "first_name"=>"John1",
 "email"=>"[email protected]",
 "groups"=>
  {"data"=>
    [{"serie"=>5, "year"=>3, "specialization"=>"Matematica", "management_id"=>1, "group_number"=>2}, {"serie"=>5, "year"=>3, "specialization"=>"Matematica", "management_id"=>1, "group_number"=>2}]}}

Перед сохранением ресурс выглядит так:

pry(#<Overrides::RegistrationsController>)> @resource
=> #<User id: nil, provider: "email", uid: "", first_name: "John1", last_name: "Doe1", email: "[email protected]", role: "Student", created_at: nil, updated_at: nil, groups: {"data"=>[{"serie"=>5, "year"=>3, "specialization"=>"Matematica", "management_id"=>1, "group_number"=>2}, {"serie"=>5, "year"=>3, "specialization"=>"Matematica", "management_id"=>1, "group_number"=>2}]}>

Ответы на вопрос(1)

Ваш ответ на вопрос