У меня есть хэш, где ключи являются country_id, и я хотел бы изменить ключи country_id, чтобы фактически иметь название страны. У меня есть функция, которая может выполнять преобразование идентификатора в имя, но я не могу понять, как обновить ключи и правильно сопоставить их текущие значения.
Также я не могу использовать transform_keys
из-за версии ruby \ rails, на которой я работаю.
Я не знаю, какая страна будет выбрана, поэтому мне нужен способ циклического перебора ключей и их обновления, а затем сохранения обратно в хэш или новый хэш со значениями, сопоставленными правильно.
хэш, который у меня есть, называется @trending_countries
ключи в настоящее время - это country_id, который необходимо обновить, и значение состоит из числа для этой конкретной страны.
@trending_countries = {22=>2, 34=>3}
и хотелось бы в формате @trending_countries = {United States=>2, Canada=>3}
Я попытался сделать следующее в моем контроллере
@trending_countries.each {|k, v| @trending_countries[k] = Country.get_country_name(k)}
функция, выполняющая преобразование идентификатора в имя, находится в отдельной модели, которая называется Country.
# returns the country name when a country id is given.
def self.get_country_name(country_id)
country = self.find_by(id: country_id)
return country.name
end