コンテンツ ID 管理を seed と admin で二重化しない

seed と admin の二重管理問題

Rails + 任意 frontend で個人ブログを組むとき、最初に詰まるのが 「初期記事をどこに入れるか」。

選択肢:
seed-fu — DB に直接 fixture で投入。コードと一緒にバージョン管理される
admin で手入力 — 公開後に編集者が書く。DB の中だけに存在する
両方使う — seed で雛形、admin で本物に書き換える

私は最初 (3) で運用していて、seed と admin の両方が真実 という二重管理状態に陥った。

二重管理の何が困るか

具体的な症状:
make dbreset を流すと admin で書いた記事が消える
seed-fu の fixture と DB の状態がズレる
本番環境に dev で書いた記事が乗らない / 逆もしかり
「この記事は seed？admin？」が判別不能

新規プロジェクトの最初の数週間で、必ずと言っていいほど踏む地雷。

解決方針: seed は「最小骨格」だけ

二重管理を避けるルール:
seed-fu には骨格データ（admin / authors / categories / tags / apikeys）だけ入れる
記事は seed に入れない（demo 用の数件は OK、ただし本番では skip）
public 記事は admin から書く

これで make dbreset で消えるのは「常に再投入される骨格」だけ。記事は admin に書いたら DB に残り続ける。

demo 記事を入れたい時

最初の見栄えのために demo 記事を 5〜10 件入れたい時もある。これも seed-fu でやるが、環境変数で skip できるようにする:

本番デプロイ時に SKIPDEMOPOSTS=true を渡せば、demo は入らない。…