ruby-on-rails - 添加自定义种子文件

标签 ruby-on-rails ruby ruby-on-rails-3.2 rake seed

我想用虚拟数据填充新功能,但不想使用 db/seeds.rb 文件,因为它已经包含与此功能无关的其他数据。

运行默认seeds.rb文件,你运行命令 rake db:seed .

如果我在 db 中创建一个文件名为 seeds_feature_x.rb 的目录, rake 命令运行(仅)那个文件会是什么样子?

最佳答案

首先创建一个单独的目录来保存您的自定义种子——此示例使用 db/seeds。然后,通过将 rakefile 添加到您的 lib/tasks 目录来创建自定义任务:

# lib/tasks/custom_seed.rake
namespace :db do
  namespace :seed do
    Dir[Rails.root.join('db', 'seeds', '*.rb')].each do |filename|
      task_name = File.basename(filename, '.rb')
      desc "Seed " + task_name + ", based on the file with the same name in `db/seeds/*.rb`"
      task task_name.to_sym => :environment do
        load(filename) if File.exist?(filename)
      end
    end
  end
end

此 rakefile 接受 db/seeds 目录中的种子文件的名称(不包括 .rb 扩展名),然后像运行 一样运行它种子.rb。您可以通过从命令行发出以下命令来执行 rake 任务:

rake db:seed:file_name # Name of the file EXCLUDING the .rb extension 

更新:现在它还应该在运行 rake --tasksrake -T 时列出种子任务。

关于ruby-on-rails - 添加自定义种子文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19872271/

相关文章:

ruby-on-rails - 对 Devise Controller 进行子类化后,Rails View 中的实例变量为零

ruby-on-rails - 无方法错误 : private method `pp' for NMatrix

ruby-on-rails - 如何在 Rails 中处理 "fixed content"模型?

ruby-on-rails - Rails 在搜索中组合多个列

ruby-on-rails - 未通过 Rails 4 中的 image_tag 在生产中提供的图像

ruby-on-rails - 两列上的单独索引和 Rails 中对的唯一约束

ruby-on-rails - 从事件记录关系获取模型类

ruby-on-rails - rails 模型验证(不包含子字符串)

validation - Rails 3.2-验证-重定向回错误

ruby - 从 url 中获取参数并删除任何非字母字符和数字?