QA@IT

railsでマスターデータを用意するときに楽な方法

2932 PV

railsでアプリケーションを作成するとき、マスターデータが必要になりました。
マスターデータのみが欲しいのであれば、db/seed.rb内にマスターデータ毎にModelを作成するコードを書いてdb:seedコマンドを流せば済みます。
が、マスタデータが複数テーブルにまたがり大量に存在すること、その複数テーブルが

+----+       +----+       +-----+
|User| 1---n |Blog| 1---n |Entry|
+----+       +----+       +-----+

のようなカスケード形式のhas_manyな関連だったり、

+——————+       +—————————+       +——+
|Author| 1---n |BookAuthor| m—1 |Book|
+——————+       +—————————+       +——+

のようなhas_many throughな関連を含んでる場合もあったりして構造が複雑です。
また、そのマスターデータをシードとしてだけでなく、テスト内でもテスト対象のマスターデータとして利用したいです。つまりdb/seed.rbかその代わりになるものをテスト(できればrspec)でも利用したいと考えています。

FactoryGirlを使ってそれをdb/seed.rbで

Dir[Rails.root.join('spec/support/factories/*.rb')].each {|f| require f }

のようにして読み込むという形にしてしのいでいますが、factorygirlの仕様からhas_many throughのデータは重複した状態でされてしまったりと、扱いも面倒なのでもっと綺麗な方法がとれればそちらにしたいと思っています。
マスターデータを入れる際に楽な方法ご存知あれば教えて下さい。

ウォッチ

この質問への回答やコメントをメールでお知らせします。