雑種のポメラニアン

フリープログラマーの日記とか人生観とか綴るよ

Railsでdb:seedでマスターテーブルを管理するオススメのやり方

普通seeds.rbは


Model.create([
{value: 'value1'},
{value: 'value2'},
...
])
って書くのが普通だけど、
マスターテーブルを新規に作ってseeds.rbを更新してrake db:seedすると
先に作ってあるテーブルに重複レコードができてしまう。

そこで、データにidを含めて、createではなくfirst_or_createを使うと
何回でもseeds.rbを更新してrake db:seedできる。

<例>


MasterJob.first_or_create([
{ id: 1, value: '学生' },
{ id: 2, value: '会社役員' },
{ id: 3, value: '会社員' },
{ id: 4, value: '会社員(管理職)' },
{ id: 5, value: '公務員' },
{ id: 6, value: '自営' },
{ id: 7, value: '医師・弁護士・税理士など' },
{ id: 8, value: 'アルバイト' },
{ id: 9, value: '無職' },
{ id: 10, value: 'その他' },
])