将seeds.rb拆分成多个部分?

GSP*_*GSP 10 ruby seed ruby-on-rails-3

我想将seeds.rb文件分成多个部分以便于维护; 在a.rb中播放所有A,在b.rb中播放B等.单独的文件位于带有seeds.rb的db /目录中.每个文件都包含一堆"A.create"或"B.create"调用,我想从seeds.rb调用这些文件.

我试过了:

include 'a'
include 'b'
Run Code Online (Sandbox Code Playgroud)

load 'a.rb'
load 'b.rb' 
Run Code Online (Sandbox Code Playgroud)

在我的seeds.rb中,但当我调用"rake db:seed"时,它们似乎没有被处理.这可能更像是一个直接的ruby问题而不是rails问题,但为了完整性我在Mac上使用Ruby 1.9.2和Rails 3.

Zab*_*bba 20

./db/seeds/my_module.rb:

module MyModule
  puts "In my_module.rb"
  # add code here
end
Run Code Online (Sandbox Code Playgroud)

./db/seeds.rb:

require File.expand_path('../seeds/my_module', __FILE__) # the ../ just removes `seeds.rb` filename from the path which is given by __FILE__

p "In seeds.rb"
# add code here
Run Code Online (Sandbox Code Playgroud)

  • 我不确定将它们放在`db/migrate`中是个好主意; 迁徙和种子是不同的,应该这样对待.相反,`db/seed`目录可能会更好. (9认同)
  • 是的,请不要将它们放在`db/migrate`中,它们属于一个单独的文件夹,例如`db/seed`. (3认同)