2009-07-31 10 views
1

Rake Fixtures(rake db:fixtures:load)をMySqlデータベースに読み込もうとしていますが、AutoIncrement値で何らかの奇妙な動作が見られます。通常、これは挿入のたびに1ずつ増え、テストを定義/作成することができます。 (BTW - 通常のスクリプトからの作成/挿入が正しく機能する)Rails Rake MySql自動インクリメントの問題w db:fixtures:load

しかし、私が灯具からロードすると、idフィールドに大きな乱数が割り当てられ、ロード後にテーブルのautoinc値も大きな値(1054583385)になります。他に誰がこれを見たことがありますか?

FWIWこれはMySql 5.0(私もMySql 5.1でテスト済み、問題が見つかって5.0にロールバックされました)のWindows XP上です。

他に誰かがこれを見たことがありますか?これは既知のバグですか?

TIA、

答えて

1

これはレールフィクスチャの異常動作ではありません。これは、設計上、あなたの什器のラベルに基づくランダムなハッシュです。 documentationを参照してください。

必要に応じて、フィクスチャにIDを明示的に指定することができます。

id: 1 

本当に重要ですか?フィクスチャは、テストに使用するためのものです。関係が存在する限り、オブジェクトのIDは無関係です。 - 私はまだ学んでいる情報のため

# Returns a consistent identifier for +label+. This will always 
# be a positive integer, and will always be the same for a given 
# label, assuming the same OS, platform, and version of Ruby. 
def self.identify(label) 
    label.to_s.hash.abs 
end 
+0

Thxを:ここで

は備品クラスからの関連する機能です。私はテストのために親/子/孫のデータ関係を定義/作成しようとしているので、この場合は問題になります。たぶん、これを行うためのより良い(より多くのRails-ishの方法です) - しかし、私は特定の関係を持つデータを作成する必要があります(いくつかのレポートドリルダウンクエリをテストしています)。そこで私はfkの値を前もって予測できるようにしたいと考えました。 – BrendanC

+0

hasとbelongsの関係が適切に定義されている場合は、外部キーの値を心配する必要はありません。 ActiveRecordが提供するツールを使用します。 – hobodave

関連する問題