💭
【Rails】アソシエーション先を一覧でサクッと確認したい
テーブル数が多くなってくると、アソシエーション先をスキーマで追うよりもコマンドでサクッと確認したくなる時があります。
Reflection
reflections
を使うとアソシエーション先の一覧をハッシュで取得できます。
pry(main)> Post.reflections
# => {
# :author => #<ActiveRecord::Reflection::BelongsToReflection:0x00007f6d0c2f07b0>,
# :comments => #<ActiveRecord::Reflection::HasManyReflection:0x00007f6d0c2f0738>
# }
reflect_on_all_associations
の場合は配列で取得できます。
pry(main)> Post.reflect_on_all_associations
# => [
# #<ActiveRecord::Reflection::BelongsToReflection:0x00007f6d0c2f07b0>,
# #<ActiveRecord::Reflection::HasManyReflection:0x00007f6d0c2f0738>
# ]
一方で、アソシエーション先のテーブル名だけ確認したい場合が多いので、map
を使ってシンプルに取得する方が実用的な気がします。
pry(main)> Post.reflect_on_all_associations.map(&:class_name)
# => ["Author", "Comment"]
Discussion