У меня есть модель, называемая списками, в которой есть столбец с именем item_ids
.item_ids
- это столбец JSON (MySQL), и этот столбец содержит массив UUID, каждый из которых ссылается на один элемент.
Теперь, когда кто-то создает новый список, мне нужно искать, существует ли существующий список с таким же набором UUID, и я хочу сделать этот поиск, используя сам запрос для более быстрого ответа.Также используйте ActiveRecord, запрашивая как можно больше.
Как мне этого добиться?
item_ids = ["11E85378-CFE8-39F8-89DC-7086913CFD4B", "11E85354-304C-0664-9E81-0A281BE2CA42"]
v = List.new(item_ids: item_ids)
v.save!
Теперь, как мне проверить, существует ли список, чьи идентификаторы элементов точно совпадают с указанными взапрос?После не будет работать.
list_count = List.where(item_ids: item_ids).count
Редактировать 1
List.where("JSON_CONTAINS(item_ids, ?) ", item_ids.to_json).count
Этот оператор работает, но он считается, даже если соответствует только один элемент.Ищете точное количество предметов.
Редактировать 2
List.where("JSON_CONTAINS( item_ids, ?) and JSON_LENGTH(item_ids) = ?", item_ids.to_json, item_ids.size).count
Похоже, это работает