Я пытаюсь создать простой хэш для поиска соответствующих строк некоторым символам (:student_number,:first_name,...). У меня проблема с получением данных из этой функции. Вот функция
Фрагмент А
def get_nice_column_name(col_symbol)
column_names = {
:first_name => "Student's First Name",
:last_name => "Student's Last Name",
:email => "Student's Email",
:given_name => "Student's Given Name"
}
return column_names[col_symbol]
end
Вот как я это использую, но не работает:
Фрагмент Б
col_titles = []
params = {:first_name => 'true',
:last_name => 'true',
:email => 'true',
:given_name => 'true' }
params.each do |key, value|
if ( value == 'true')
col_titles << get_nice_column_name(key)
end
end
Когда я просматриваю col_titles, я ожидаю ["Имя студента", "Фамилия студента"], но на самом деле ничего не получаю, просто [] пустой массив.
Я подумал, что это странно, поэтому я попытался распечатать object_id символов (col_symbol во фрагменте A) и символы в именах столбцов хэша, я получил разные object_id. Мне интересно, почему они разные (они оба представляют одни и те же символы). Если я добавлю это к функции get_nice_column_name во фрагменте A:
puts "col_symbol is " + col_symbol.object_id.to_s + ", while :first_name is " + (:first_name).object_id.to_s
puts "col_symbol is " + col_symbol.object_id.to_s + ", while :last_name is " + (:last_name).object_id.to_s
puts "col_symbol is " + col_symbol.object_id.to_s + ", while :email is " + (:email).object_id.to_s
puts "col_symbol is " + col_symbol.object_id.to_s + ", while :given_name is " + (:given_name).object_id.to_s
Я бы получил это в консоли
col_symbol is 98351040, while :first_name is 1221688
col_symbol is 98351040, while :last_name is 580888
col_symbol is 98351040, while :email is 168888
col_symbol is 98351040, while :given_name is 1290648
983541040 на самом деле не соответствует ни одному из {1221688, 580888, 168888, 1290648}. Поэтому мой get_nice_column_name бесполезен? Потому что символы под капотом другие?
Спасибо за помощь ребята !
С уважением