2009-06-09 11 views
0

こんにちは、テーブルのカスタムIDを持ち、デフォルトのauto_incrementを使用しません。それは可能ですか? id => false、それ以降はt.column:id、:bigintを作成します。 新しいレコードを作成すると、IDはNULLに設定されます。Ruby On RailsカスタムID

この動作を回避する方法はありますか? プライマリキーをフィールドuid(実際にはFacebookのIDです)に設定できますが、通常は関係が通常idフィールドを探すために私のために壊れます。

+0

ごめんなさい。あなたは価値を埋めることを止め、それが数字を埋めるのではないことを迂回したいのですか?あなたの質問を少し拡大してください。 – baash05

答えて

1

私はどこに問題があるかわかりません。もちろん、id列に対してauto_incrementを無効にし、id値を手で挿入しないと、idはNULLになります。

Btw:関係の外部キーと主キーを定義できます。 facebook_idを主キーとして使用することは問題ありません。

+0

私は手動でUser.create(:id => 9459405)を挿入しますが、過去にいくつかの問題があったので、Railsの自動インクリメントのデフォルトには関係ありません。 – PanosJee

2

Railsのサロゲート自動インクリメントIDをプライマリIDとして使用することは、ほぼ確実に簡単になります。

2番目のユニークな列facebook_idを持ち、そのフィールドに基づいてすべての検索を実行することは問題ありませんが、互換性の理由から言います(プラグイン作成者は仮定しないでください)。感知できるようにプライマリキーとユニークキーに関するパフォーマンスの問題は最小です

+1

-1答えではなく、ただの批評です。 – baash05

+0

@ baash05が合意しました。批評ではなく、実際の回答を提出しようとしていますが、カスタムIDを作成することが有益であるケースがあります。http://stackoverflow.com/questions/6402189/specify-custom-primary-key-in-移行 –