Techioz Blog

Railsメソッドの外部キーについて

概要

会社を削除したいのですが、モデルにdependent: destroy がありません。 Rails には、どのテーブルが特定の外部キーに接続されているかを知るための ActiveRecord メソッドはありますか?

解決策

ActiveRecord::reflect_on_all_associations と Array#reject を使用すると、:dependent キーなしですべての has_many アソシエーションをフィルタリングできます

Company.
  reflect_on_all_associations(:has_many).
  reject { |association| association.options[:dependent] }

テーブル名を取得するには、plural_name 属性を使用できます

Company.
  reflect_on_all_associations(:has_many).
  reject { |association| association.options[:dependent] }.
  map(&:plural_name)