为测试在开发数据库中添加种子数据

4

我有几个表格需要添加约10行数据,以一种尊重和说明它们之间关系的方式。

  • 如何为测试向我的应用程序开发数据库添加种子数据(虚拟数据)?
    我希望有人能指点我一个适用于Rails的友好方法。

  • 是否有一种简单的方法可以使每个表格的CRUD方法成为视角控制器?


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

12

这就是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吗?我希望有更自动化的方式来添加几十行数据。 - E.E.33
1
你可以在这个Ruby文件中使用循环。如果你想使用真实姓名等,你还可以使用faker gem https://github.com/btelles/faker。 - Gazler
2
我不建议这种方法,因为这不是种子文件/任务的用途。请参见此问题以获取更好的答案(在我看来)。 - Armando Fox
种子数据库(seed.db)仅用于生产数据,而rake db:fixtures:load则用于开发和测试吗? - Taysky
@Taysky 是正确的。种子数据是您的应用程序可能具有的真实种子数据。例如,行星名称或角色的静态列表。我建议在 db 命名空间下创建一个自定义 rake 任务。使用 ActiveRecord 通过循环创建多条记录。 - karns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接