У меня есть алгоритм, который просматривает всех пользователей моих сайтов, находя тех, которые имеют общее свойство с пользователем, используя алгоритм (переходя на определенную страницу). Он может найти несколько пользователей, каждый из которых может иметь несколько общих свойств. Алгоритм работает нормально, с точки зрения поиска совпадений, но у меня возникают проблемы с решением, как хранить данные, чтобы позже я смог использовать каждую единицу информации. Мне нужно иметь доступ как к найденным пользователям, так и к каждому из соответствующих общих свойств, поэтому я не могу просто создать строку. Это пример вывода, выполняемого с точки зрения пользователя 1:
пользователь 4
sharedproperty3
sharedproperty6
пользователь 6
sharedproperty6
sharedproperty10
shareproperty11
Что мне нужно сделать, чтобы иметь возможность хранить эти данные и иметь доступ к любому их фрагменту для дальнейшей манипуляции? Я думал о хэше хэша, но я не могу по-настоящему обернуть его вокруг. Я довольно новичок в программировании и, в частности, в Ruby. Спасибо за чтение!
РЕДАКТИРОВАТЬ - Вот код. Я полностью ожидаю, что это будет самый неправильный способ сделать это, но это моя первая попытка, так что будьте осторожны :)
Так что, если я правильно понимаю вас, ребята, вместо того, чтобы добавлять интересы в строку, я должен создать массив или хеш, добавить каждый интерес по мере его нахождения, а затем сохранить каждый из них в массиве или хэше? Большое спасибо за помощь.
def getMatchedUsers
matched_user_html = nil
combined_properties = nil
online_user_list = User.logged_in.all
shared_interest = false
online_user_list.each do |n| # for every online user
combined_properties = nil
if n.email != current_user.email # that is not the current user
current_user.properties.each do |o| # go through all of the current users properties
n.properties.each do |p| # go through the online users properties
if p.interestname.eql?(o.interestname) # if the online users property matches the current user
shared_interest = true
if combined_properties == nil
combined_properties = o.interestname
else
combined_properties = combined_properties + ", " + o.interestname
end
end
end
if shared_interest == true
matched_user_html = n.actualname + ": " + combined_properties
end
end
end
end
return matched_user_html
render :nothing => true
end