初始化初始化器时播种失败

时间:2018-07-13 21:29:59

标签: ruby-on-rails ruby ruby-on-rails-5 initializer

最近,我一直在Rails 5项目中使用下一个初始化程序:

initializers / initialize_configs.rb

$current_city = Config.first.city

但是在进行一些更改之后,我不得不安装db:migrate和db:seed,然后出现了这个错误。在那之前,我的应用程序运行良好。

Config是仅用于单行的表,我在其中保存每个VPS的配置,而$ current_city也是每个VPS拥有的变量。

问题是当我使用rails db:seed时会显示此错误,因此我无法加载初始配置。

如何在仍然加载此初始达达数据的同时解决问题?

enter image description here

1 个答案:

答案 0 :(得分:1)

运行rails db:seed时会初始化Rails,否则您将无法在该文件中使用Rails模型。这就是造成您问题的原因。因为在该初始化过程中,Config.first.city必须失败,因为数据库中还没有数据。

目前尚不清楚为什么需要从数据库加载应用程序的配置。其他人已经指出,这是有问题的,感觉像是代码的味道。

尽管如此,目前您有两个选择:

  1. 请勿使用Rails种子文件填充数据库。而是使用例如普通SQL。或者
  2. 更改初始化程序中的代码,使其能够处理Config.first为空的情况。例如,使用合理的默认值。