1

次のコーシャーはいますか?railsでは、primary_keyとforeign_keyのデータ型が異なる2つのモデルを関連付けることはできますか?

schema.rb 
    users 
    id:int (autoincr.) 
    uid:string <---------------- 
    ... 

    fb_friends 
    id:int (autoincr.) 
    uid:int <------------------- 
    friend_uid:int 
    ... 

user.rb 
    has_many :fb_friends, :primary_key => "uid", :foreign_key => "uid" 

一緒に「ユーザ」を結ぶキーとその「fb_friends」は、異なるデータタイプ(文字列と整数)であることに留意されたいです。理想的な世界では、おそらくこれをしないだろうが、現在のシステムアーキテクチャーを考えれば、これは最も効果的な解決策であるようだ。

しかし、これは大丈夫ですか、それともスヌーボーなしでは機能しますか?

答えて

2

=>

外国 キーで

対応する列

参照されるキーは の類似した内部データ型を InnoDB内に持たなければならないので、型変換なしで と比較することができます。 のサイズと整数型の符号は、同じ でなければなりません。文字列型の長さには、同じでないように が必要です。非バイナリの (文字)文字列の場合は、 の文字セットと照合順序は でなければなりません。

詳細情報here、とにかく、私はそれは、異なる種類のフィールドを比較することをお勧めだと言うではないだろう:(。

が、それはあなたのお役に立てば幸い!

1

動作するかどうかわかりませんが、変更するオプションがある場合はお勧めできません。これは、Railsのマイグレーションで列の種類を変更するのはとても簡単です:それは、MySQLのために、例えば、使用しているDBエンジンに依存

change_column :users, :uuid, :integer 
関連する問題