経緯
今まで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]
こいつのおかげでえらくはかどりました。連番を用意しなければいけない状況がなかなかあるので重宝しそうです。
今日もこれで眠れそうです。もう春まで寝たい。
おやすみなさい。