RAILS PRESS RUBY on RAILS, it’s DRY and COOL …

RSS Feed

RAILS PRESS RSS

Tag Cloud

はてなブックマーク - railspress.matake.jp の注目エントリー
象形文字くさび形文字ミイラそろばんの玉そろばんコーラン占いの板?象牙大英博物館
« 前のエントリ
Railsでテストしよう!FileColumn&RMagickを使うモデルでファイルアップロードする方法&Fixtureで画像を登録する方法
次のエントリー »
ActsAsAuthenticated (acts_as_authenticated)の脆弱性??

Posted on
2007/10/23

Tags
トラップ, 疑問、質問

Keywords


この記事をはてなブックマークに登録 この記事のはてなブックマーク数 この記事を livedoor クリップに登録この記事の livedoor クリップ数 このエントリを del.icio.us に追加
ブックマークに追加する

migrationで初期データを生成するのは辞めた方がよい。

今日はテスト書いてる途中に割り込んできた機能追加タスクをこなしながら、ハマったことをつらつらと書いてみます。
こいつのいい解決方法ご存知のかたおられましたら、ご教授くださいm_ _m

==

なんか同じ過ちをたびたび繰り返しているような気がするが、Userモデルのvalidateとかbefore_create、after_createあたりで別のモデル呼び出してて...みたいなときに、migrationで初期Userデータを生成するのは辞めておいた方がよいのかもな。

新しいモデルをUserモデルのbefore_createとかで使おうとしたら、一瞬でrake db:migrateが通らなくなってしまう。。。
今回の場合だと、UserモデルのvalidateでKeywordFilterというモデルを呼び出してフィルタ処理を追加したのだが、KeywordFilterテーブルが生成されるより前に初期Userデータを生成しようとして、rake db:migrateでkeyword_filtersテーブルが無いよ!!っておこられた訳で。。。まぁそら無いわな。

前はUserにPointを付けるとかいうので、after_createで初期ポイント生成処理とか入れたら、Pointモデルがネーよ!!って起こられたし。。。学習の無いヤツだ、俺は。

で、これの解決策。

初期データ生成のmigrationの番号を後ろにすれば解決だけど、これ、サービス開始前ならいざしらず、開始後だと結構やっかい。rake db:migrateで現状にテーブル追加はできても、別環境ではrake db:migrateが通らないという状況に。。。

migrationってVERSION指定はできても、特定の番号(0**_create_...rbの**のとこ)だけをムシするとか、特定の番号だけを実行するってのはできないので、もうこれはどうしようもないのだろうか??人のアプリダウンロードしてきて、rake db:migrateでエラーとか出たら結構凹むよね。。

Enginesとかだと、昔は

LANG : shell etc.
  1. rake db:migrate:engines

とかできてたので、

LANG : shell etc.
  1. rake db:migrate:initialize

とかできればいいのになぁ〜

「初期データはmigration使って登録するのが便利なのだけれど、必ずテーブル定義が終わった後で初期データを登録したい」

って要望を、うまく解決する方法ってないかしらん?


この記事がお役に立ちましたら、一言コメントもらえると嬉しいですm_ _m

[...] via: migrationで初期データを生成するのは辞めた方がよい。 - RAILS PRESS [...]


コメントはこちらから




使用可能タグ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


« 前のエントリ
Railsでテストしよう!FileColumn&RMagickを使うモデルでファイルアップロードする方法&Fixtureで画像を登録する方法
次のエントリー »
ActsAsAuthenticated (acts_as_authenticated)の脆弱性??