Rails

モデルのアソシエーション情報を調べる

More than 3 years have passed since last update.

モデルにアソシエーションが定義されているかってどうやって判定すんだっけか・・・?
調べてみた

reflect_on_associationというメソッドがあるらしい
例えば・・・

Book.reflect_on_association(:author)

関連があれば、その情報が返ってきて、定義されていない場合はnilとなる

他にも、reflectionsreflect_on_all_associationsとかあるようです。
reflect_on_all_associationsのメソッドでは、

Book.reflect_on_all_associations(:belongs_to)

というように、belongs_toだけ, has_manyだけとか指定して取得することができるようです。

単純にアソシエーションの名前だけ全部欲しすって時は、

Book.reflect_on_all_associations.map(&:name)

で取れたり・・・。

あんまり使う機会ないですが、参考までに