【发布时间】:2017-11-10 14:42:58
【问题描述】:
我想以与为测试数据库播种完全相同的方式播种我的开发数据库。我有一个PersonalTitle 模型,它有一个属性title。 title 的值类似于 Mr、Mrs、Miss、Ms 和 Dr。还有其他几个型号belong_toPersonalTitle。例如
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 中,我有
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 中使用个人头衔,我有
administrator_john_smith:
personal_title: personal_title_mr
所以我可以使用命名引用来使用personal_title_id 填充管理员表。如果我为我的开发数据库播种,我就无法做到这一点。根据我在堆栈溢出中发现的情况,对于开发,personal_titles.yml 必须看起来像这样,
- title: Mr
- title: Mrs
- title: Ms
- title: Miss
- title: Dr
因此,不能在用于填充开发数据库的 yml 文件中命名个人头衔。为什么不? Rails 知道如何使用名称引用,因为它会在为测试数据库播种时使用。
我正在使用 Rails 4.10 和 Ruby 1.9.3
更新
我正在使用db\seeds\seed_all.rb 播种我的开发数据库。在这个文件里面我有
seed_file = Rails.root.join('db', 'seeds', 'personal_titles.yml')
personal_titles = YAML::load_file(seed_file)
PersonalTitle.create!(personal_titles)
我知道faker,我有一个种子文件。在上述情况下,我想要我理解的已知数据,这些数据不会改变,并且我可以完全控制关联。
【问题讨论】:
-
我没有完全理解您的问题,因为您与种子和固定装置的交互方式相同(而我考虑的是不同的事情),但环境通常不会影响任何过程以使其如此不同。留下我的一些共同想法的答案
-
你试过
rake db:fixtures:load吗? -
不,我没有@MrYoshiji,但我刚刚做到了,这正是我想要的。如果您添加正式答案,我会将其标记为正确
标签: ruby-on-rails