belongs_to や has_many で宣言した、 モデル間のアソシエーションの情報を取得するには、 ActionRecord::Reflection の reflect_on_all_associations メソッドを使えばいい。
ActiveRecord::Base は ActiveRecord::Reflection を include しているので、 モデルのクラスメソッドとしてすぐ使える。
# 全部 Task.reflect_on_all_associations # belongs_to だけ Task.reflect_on_all_associations(:belongs_to) # has_many だけ Task.reflect_on_all_associations(:has_many)
1 件だけ取得する reflect_on_association なんてのもある。
Task.reflect_on_association(:list)
ActiveRecord::Reflection には、他にも使えそうなメソッドがちらほら。
アソシエーションの情報を取得する方法はずっと探していて、 ようやく見つけたのでメモしとこう。