首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用rails测试夹具为我的开发数据库添加种子

如何用rails测试夹具为我的开发数据库添加种子
EN

Stack Overflow用户
提问于 2017-11-10 14:42:58
回答 2查看 1.4K关注 0票数 2

我希望以与我的测试数据库完全相同的方式为我的开发数据库添加种子。我有一个PersonalTitle模型,它只有一个属性,titletitle具有MrMrsMissMsDr等值。还有其他几种模型是belong_to PersonalTitle的。例如

代码语言:javascript
复制
class Administrator < ActiveRecord::Base
  belongs_to :personal_title
end

class Worker < ActiveRecord::Base
  belongs_to :personal_title
end

class Client < ActiveRecord::Base
  belongs_to :personal_title
end

..。以此类推

在种子测试数据库的personal_titles.yml中,我有

代码语言:javascript
复制
personal_title_mr:
  title: Mr
personal_title_mrs:
  title: Mrs
personal_title_ms:
  title: Ms
personal_title_miss:
  title: Miss
personal_title_dr:
  title: Dr

然后,如果我想在administrators.yml中使用个人头衔,我有

代码语言:javascript
复制
administrator_john_smith:
  personal_title: personal_title_mr

因此,我可以使用命名引用来使用personal_title_id填充administrators表。如果我的开发数据库是种子,我就不能这么做。根据我在堆栈溢出的发现,为了开发,personal_titles.yml必须是这样的,

代码语言:javascript
复制
- title: Mr
- title: Mrs
- title: Ms
- title: Miss
- title: Dr

因此,个人标题不能在用于填充开发数据库的yml文件中命名。为什么不行?Rails知道如何使用名称引用,因为它是在测试数据库被种子时使用的。

我正在使用Rails 4.10和Ruby1.9.3

更新

我正在用db\seeds\seed_all.rb播种我的开发数据库。在这个文件里我有

代码语言:javascript
复制
seed_file = Rails.root.join('db', 'seeds', 'personal_titles.yml')
personal_titles = YAML::load_file(seed_file)
PersonalTitle.create!(personal_titles)

我知道faker的事,我有一份种子档案。在上面的例子中,我希望知道我理解的数据,这不会改变,并且我对关联有完全的控制。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-10 16:04:59

您可以使用以下rake命令触发数据库中的固定装置的负载:

代码语言:javascript
复制
rake db:fixtures:load

默认情况下,rails env将进行开发,因此将在此环境的数据库中加载固定装置。

票数 8
EN

Stack Overflow用户

发布于 2017-11-10 14:50:01

要为您的数据库添加种子,我将使用db/seeds.rb,它只接受通常的红宝石代码。在测试中,数据库通常使用fixtures (我认为您正在使用这种方法)或factory_girl填充,但是我还没有以同样的方式处理过类似的seeding。

如果您有复杂而长的种子文件,请查看种子数据库中的一些宝石。我在最近的一个项目中使用seedbank将种子分割成单独的文件,如seeds/users.seeds.rbseeds/categories.seeds.rb等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47225278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档