Создал две таблицы
Человеки (имя, телефоны)
Телефоны (номер, человек_id)
Связал
def Человек < ActiveRecord::Base
has_many :телефоны
end
def Телефон < ActiveRecord::Base
belongs_to :человек
end
Далее получаю объект и хочу вывести список всех записей:
h = Человек.find(:first)
puts h.inspect # 1
puts h.телефоны.inspect # 2
puts h[:телефоны].inspect # 3
1. Вижу что h.inspect выводит только записи из таблицы Человек, без телефонов.
2. Работает правильно, выдаёт список телефонов
3. Не работает, выдаёт пустой список
Задача: получить ВСЮ информацию по человеку, как имя так и телефоны. Как это сделать без вызова метода с именем атрибута? Как частный случай: как правильно написать пункт 3, что бы было аналогично 2, только в качестве атрибута вызывать не метод с именем атрибута, а передавать имя атрибута в качестве параметра.
Иными словами, мне интересно, что бы код не знал что именно содержится в объекте класса Человек. То есть что то типо:
def out_put_info(obj)
obj.each{|parm|
case parm
when Обычный параметр then puts parm.inspect
when "Таблица типа belong_to" then out_put_info(parm)
end
}
end
obj = Человек.find(:first)
out_put_info(obj)
Иными словами выводить информацию по объекту со всеми связями. Знаю что в ActiveRecord это как-то можно сделать, но все поиски меня не привели к истине. Так что прошу помощи у вас.
Тыканье носом в нужную часть документации приветствуется, ссылку на главную страницу с описанием API давать смысла нет, google использовать умею.