Я пытаюсь отфильтровать результаты поиска пользователей в своем приложении, чтобы показывать только пользователей, которые НЕ являются друзьями. Таблица моих друзей имеет 3 столбца; f1 (идентификатор пользователя, отправившего запрос), f2 (имя пользователя друга, получившего запрос) и подтвержденное (логическое значение true или false). Как вы можете видеть, @usersfiltered является результатом поиска. Затем устанавливается определение пользователя текущего пользователя. Затем я пытаюсь удалить друзей из результатов поиска. Это, похоже, не работает, но должно быть довольно прямолинейным. Я попытался удалить (не хорошо) и уничтожить.удаление объектов из массива во время цикла
def index
#THIS IS THE SEARCH RESULT
@usersfiltered = User.where("first_name LIKE?", "%#{params[:first_name]}%")
#THIS IS DEFINING ROWS ON THE FRIEND TABLE THAT BELONG TO CURRENT USER
@confirmedfriends = Friend.where(:confirmed => true)
friendsapproved = @confirmedfriends.where(:f2 => current_user.id)
friendsrequestedapproved = @confirmedfriends.where(:f1 => current_user.id)
#GOING THROUGH SEARCH RESULTS
@usersfiltered.each do |usersfiltered|
if friendsapproved.present?
friendsapproved.each do |fa|
if usersfiltered.id == fa.f1
#NEED TO REMOVE THIS FROM RESULTS HERE SOMEHOW
usersfiltered.remove
end
end
end
#SAME LOGIC
if friendsrequestedapproved.present?
friendsrequestedapproved.each do |fra|
if usersfiltered.id == fra.f2
usersfiltered.remove
end
end
end
end
конец
Вместо ' remove' try using 'destroy' –
не будет уничтожать пользователя? – brad
Да, извините, я думаю, что неправильно понял ваш вопрос. –