Rails中的Delegate打破了迁移

时间:2013-09-25 11:56:22

标签: ruby-on-rails

我有一个Parent类,它将一些方法委托给Son。在我的迁移中,我先创建Parent,然后再创建Son

现在,如果我删除数据库并重新创建它,那么在创建parents表时,尚未创建sons表。我的代码中断了,因为此时,因为Parent委托了Son的方法,但尚未创建。

我试图通过创建一个条件来避免这种迁移问题:

if defined? Son == 'constant' && Son.class == Class
  #do delegation here
end

但是,这会在其他情况下破坏我的代码。例如,当我运行应用程序并且尚未初始化Son时,测试define? Son == 'constant'将会失败。

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

此代码应移至初始化程序并从迁移中删除。因为,迁移与它无关。这将使您的迁移变得清洁。