db/seeds.rbをfixturesから呼ぶのに変えた
Date:2016-02-17 00:01:37 +0900
Categories: ETC
Categories: ETC
経緯
今まで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] こいつのおかげでえらくはかどりました。連番を用意しなければいけない状況がなかなかあるので重宝しそうです。 今日もこれで眠れそうです。もう春まで寝たい。 おやすみなさい。Tweet