db/seeds.rbをfixturesから呼ぶのに変えた

経緯

今までrailsアプリで基礎データはdb/seeds.rbに書いていたのだけど、これに書いていると自分が書いたhookに引っかかったりして意図しない動きをしていることがままあって、控えめにいってめんどくさかったので(控えめに言わなければ、まじファ○クと叫んでたので)なんか良い方法ないかなと思っていました。

simple_seed

そんななかで simple_seed というgemを教えていただいたので、自分が作成しているアプリで入れてみた。今までseeds.rbにハッシュと配列でcreate!な感じだったものが

db/seeds/rb

import_fixture :users
import_fixture :categories
import_fixture :salaries
import_fixture :salary_dates
import_fixture :records

という感じで書くことができて
このなかのたとえばrecordsについては fixtures/records.yml を用意して

fixtures/records.yml

records_01:
id: 1
payment: 1000
date: 2016-01-02
card: false
memo: "サンプルデータ1"
category_id: 1
user_id: 1
records_02:
id: 2
payment: 1000
date: 2016-01-02
card: false
memo: "サンプルデータ2"
category_id: 2
user_id: 1
records_03:
id: 3
payment: 1000
date: 2016-01-02
card: false
memo: "サンプルデータ3"
category_id: 3
user_id: 1
records_04:
id: 4
payment: 1000
date: 2016-01-02
card: false
memo: "サンプルデータ4"
category_id: 4
user_id: 1
みたいにyamlで書くことができる。助かっちゃう。
rb -> ymlの書き直しで
seeds.rb とかは結局rubyスクリプトだったので連番とかも動的に生成できたのだけど、
fixturesはそういうわけにもいかずデータ量も2,3個とかではなかったので書き換え面倒だなと
sublimeの画面を見ながらおもっていたらなんと、マルチカーソルで連番が打てるパッケージがあるではないですか。
(InputSequence)[https://github.com/kazu1107/InputSequence]
こいつのおかげでえらくはかどりました。連番を用意しなければいけない状況がなかなかあるので重宝しそうです。
今日もこれで眠れそうです。もう春まで寝たい。
おやすみなさい。
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です