にParentいくつかのメソッドを委譲するクラスがありSonます。私の移行では、Parent最初に作成してからSon後で作成します。
ここで、データベースを削除して再作成すると、テーブルが作成された時点で、parentsテーブルは作成さsonsれていません。この時点でParentデリゲート メソッドSonが に作成されていないため、コードが壊れます。
条件を作成して、この移行の問題を回避しようとしました。
if defined? Son == 'constant' && Son.class == Class
#do delegation here
end
ただし、これは他の状況で私のコードを壊します。たとえば、アプリを実行し、初期化していないSon場合、テストdefine? Son == 'constant'は失敗します。
この状況を回避するにはどうすればよいですか?