【问题标题】:Add seed data to development database for testing将种子数据添加到开发数据库进行测试
【发布时间】:2011-10-12 18:48:40
【问题描述】:

我有几张表,我想以尊重和说明它们之间关系的方式添加大约 10 行数据。

  • 如何将种子数据(虚拟数据)添加到应用程序的开发数据库中进行测试?
    我希望有人可以为我指出一种对 Rails 友好的方法来执行此操作。

  • 有没有一种简单的方法可以在每个表透视控制器中制作 CRUD 方法?

【问题讨论】:

  • 我不明白你的第二个问题。你能详细说明一下吗?
  • 我想我刚刚找到了第二个问题的答案。我相信脚手架可以帮助我设置 CRUD 控制器和视图?
  • 哦,是的,脚手架将为您创建 CRUD 功能。我会推荐它用于学习,而不是在您实际构建应用程序时。

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 seeding


【解决方案1】:

这就是 db/seeds.rb 文件的用途。

你可以用 rake db:seed 来执行它

seeds.rb的默认内容

# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
#
# Examples:
#
#   cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
#   Mayor.create(:name => 'Daley', :city => cities.first)

这里可以使用 ruby​​,所以要插入 10 个用户:

1.upto(10) do |i|
   User.create(:name => "User #{i}")
end

【讨论】:

  • 那么,我需要在seed.rb 文件中插入代码然后执行rake 吗?我希望有一种更自动化的方式来添加数十行数据
  • 您可以使用循环,因为这是一个 ruby​​ 文件。如果要使用真实姓名等,也可以使用faker gem github.com/btelles/faker
  • 我不推荐这种方法,因为这不是种子文件/任务的用途。请参阅this question 以获得(IMO)更好的答案。
  • seed.db 是否仅用于生产数据和 rake db:fixtures:load 用于开发和测试??
  • @Taysky 是正确的。 Seed 用于您的应用可能拥有的真实种子数据。例如,行星名称或角色的静态列表。我建议在 db 命名空间下创建一个自定义 rake 任务。使用 ActiveRecord 通过循环创建许多记录。
猜你喜欢
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多