если массив a содержит какие-либо числа, также найденные в массиве b, я хочу, чтобы они ушли от a.
if b.any?
b.each do |asdf|
if a.include?(asdf)
a = a - [asdf]
end
end
end
Это самый эффективный способ сделать это?
ОБНОВЛЕНИЕ:
Ответы хорошие, но я понял, что поиск возвращает массив экземпляров People, @search_return. Моя проблема в том, что у меня есть 3 массива идентификаторов (целых чисел): @ event.a, @ event.b и @ event. c, которые являются идентификаторами людей, которые уже зарегистрировались в этом событии в некоторой емкости.
Я хочу вывести людей, которые уже зарегистрированы на мероприятии, из результатов поиска, но, к сожалению, event.a event.b и event. c - это просто идентификаторы людей, а не фактические экземпляры. людей. отсюда все это:
if instance.a.any?
instance.a.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
if instance.b.any?
instance.b.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
if instance.c.any?
instance.c.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
, что может быть довольно тяжелым для базы данных, но это поиск, который не будет выполняться слишком часто