テストデータベースをシードするのとまったく同じ方法で開発データベースをシードしたいと思います。私は、title
の属性を持つPersonalTitle
モデルを持っています。 title
は、Mr
,Mrs
,Miss
,Ms
およびDr
のような値を有する。他のいくつかのモデルがありますbelong_to
PersonalTitle
。例レールテストフィクスチャで私の開発データベースをシードする方法
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
したがって、名前付き参照を使用してdministratorsテーブルに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について知っていて、私はそれのための種子ファイルを持っています。上のケースでは、私が理解している既知のデータが必要ですが、それは変わらず、私は関連を完全に制御できます。
シードやフィクスチャーと同じように(私は異なることを考えていますが)相互作用するため、問題は完全には解決しません。いくつかの共通のアイデアで私の答えを残しました – AntonTkachov
'rake db:fixtures:load'を試しましたか? – MrYoshiji
いいえ、私は@MrYoshijiを持っていませんでしたが、私はちょうどやりました。正式な回答を追加した場合、それを正しいものとしてマークします – RamJet