Short: у меня есть атрибут внешнего ключа и я хочу знать, каков класс (или справочная таблица) этого поля внешнего ключа.
Контекст:
дано 2 таблицы: users(id, [other fields])
и issues(id, user_id, assigned_to, [other fields])
Вот моя активная запись о проблеме (извлечены не относящиеся к делу части)
class User < ActiveRecord::Base
...
end
class Issue < ActiveRecord::Base
belongs_to :user
belongs_to :assigned_user, :foreign_key => 'assigned_to', :class_name => 'User'
...
end
Я хочу сделать удобочитаемую запись в журнал изменений. например при смене назначенного пользователя я хочу получить следующее сообщение: Assigned to is changed from Otto to Zoltan
. ActiveRecord имеет функцию changes
, которая является хорошей отправной точкой, но дает мне только ссылочные идентификаторы. Чтобы перевести на имена, мне нужно прочитать пользователя по идентификатору.
Для ассоциации :user
это довольно легко, потому что я должен следовать только соглашениям. Но как получить ту же информацию для атрибута assigned_to
(я хочу сделать общее решение)? Можно ли выяснить, есть ли у нас ассоциация для данного атрибута? Можем ли мы извлечь класс этой ассоциации?