Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails splitseeds.rb文件_Ruby On Rails_Ruby_Refactoring - Fatal编程技术网

Ruby on rails splitseeds.rb文件

Ruby on rails splitseeds.rb文件,ruby-on-rails,ruby,refactoring,Ruby On Rails,Ruby,Refactoring,我的seeds.rb文件变得非常大。重构文件中数据的最佳方法是什么 我是否可以将数据放入各种文件中,并在seeds.rb文件中需要它们?由于您的seeds.rb文件是Ruby,因此您可以在其中使用Ruby执行任何操作。像routes.rb和Gemfile一样,如果需要,您可以获得相当的创造力 只是要确保你没有做任何疯狂的事情,这实际上需要一些调试。只要你保持行动清晰,就不会有混乱。也就是说,不要使用在其他文件中定义的自定义帮助器方法,这些方法可能会出现故障,并且必须手动跟踪。在这样做时,最好坚持

我的
seeds.rb
文件变得非常大。重构文件中数据的最佳方法是什么


我是否可以将数据放入各种文件中,并在
seeds.rb
文件中
需要它们?

由于您的
seeds.rb
文件是Ruby,因此您可以在其中使用Ruby执行任何操作。像
routes.rb
Gemfile
一样,如果需要,您可以获得相当的创造力


只是要确保你没有做任何疯狂的事情,这实际上需要一些调试。只要你保持行动清晰,就不会有混乱。也就是说,不要使用在其他文件中定义的自定义帮助器方法,这些方法可能会出现故障,并且必须手动跟踪。在这样做时,最好坚持使用最简单的解决方案。

我们将所有种子存储在文件夹
db/seeds
db/seeds.rb
中,我们编写以下代码:

Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each { |seed| load seed }
在加载文件之前,我们会按字母顺序对文件进行排序,以便确保文件按顺序处理(通过明智地选择文件名,例如
01_operators.rb、02_companys.rb、03_products.rb…


希望这有帮助。

将其包含在seeds.rb文件中:需要“#{Rails.root}/db/data.rb”。它似乎没有任何问题,非常有用。我到处寻找解决这个问题的好办法。感谢您的发布。如果您正在编写Rails引擎,请注意使用
YourEngineName::Engine.root
而不是
Rails.root
这似乎更简单,那么您可以在种子文件中上下移动行,而不是重命名文件:更简单?在链接答案中,必须创建文件并编辑seeds.rb文件才能加载它@nathanvda是一个很好的想法,但将其命名为
01
02
只是在重组时自找麻烦。将其命名为
0100
0200
,如果您想在1和2之间移动
99
,只需将其命名为
0150
,而不必将
02
重命名为
98
。如果将数字隔开X(本例中为100),并始终选择中间的数字,则在需要重命名某个对象以获取新对象之前,最多可以进行
log_2(X)
(本例中为6)插入。自从你最初发布这篇文章已经有几年了,希望你现在已经解决了这个问题。