Поиск всех отношений: has_many, определенных в модели - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть модель User, которая определила в user.rb множество отношений, таких как

has_many :posts, :dependent => :destroy
has_many :comments, :dependent => :destroy
... and others

Как программно найти все такие отношения? То есть я хочу иметь возможность находить все дочерние модели, такие как Post, Comment и т. Д. Через Rails, и не нужно вручную просматривать файл user.rb.

Как я могу это сделать?

1 Ответ

4 голосов
/ 12 февраля 2012

То, что вы хотите сделать, называется «отражением» - когда ваше программное обеспечение узнает больше о себе, на лету, во время выполнения.

В Rails ActiveRecord поддерживает это. См. Отражение методы.

Добавлено для документов, вы бы позвонили

associations = User.reflect_on_all_associations(:has_many)

Вы получите массив объектов, который предоставит вам информацию обо всех ассоциациях has_many вашего класса User.

...