как найти запись по массиву? - PullRequest
0 голосов
/ 24 июня 2018

Предположим,

class Sale< ApplicationRecord

    serialize :items, Array

end

Как выполнять поиск на основе свойства массива.Предметы - это список целых чисел или идентификаторов.

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

Допустим, я хочу найти идентификатор 10

, как я могу достичь его с помощью где?Я ищу что-то похожее на

Sale.where(items: Array.new(10))

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Sale.where("items = ANY(ARRAY[?]::int[])", [10])

примечание, int следует заменить на тип вашего поля items (я думаю, это уже int)

0 голосов
/ 24 июня 2018

Вы можете достичь того же, создав новое отношение Sale has_many Items, а затем вы можете использовать find , передавая массив идентификаторов.

class Sale < ApplicationRecord
    has_many :items
end

class Item < ApplicationRecord
    belongs_to :items
end

sale = Sale.first()
sale.items.find([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) // returns an array with the matching items
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...