1

下面是猶太教嗎?在rails中,您可以在兩個模型之間建立關聯,其中primary_key和foreign_key具有不同的數據類型?

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」一起爲不同的數據類型(字符串,INT)。在理想的世界中,我可能不會這樣做,但考慮到目前的系統架構,這似乎是最有效的解決方案。

但是,這是可以做/它會工作沒有snafoos?

回答

2

這取決於你所使用的數據庫引擎,例如,對於MySQL的=>

在國外 鍵對應的列並且引用的密鑰必須在 InnoDB內有 類似的內部數據類型,以便它們可以在沒有類型轉換的情況下與 進行比較。 的大小和整數類型的符號必須是相同的 。字符串類型的長度需要 不一樣。對於非二進制 (字符)字符串列, 字符集和歸類必須是 相同。

更多信息here,反正,我不會說這是一個很好的做法,比較不同類型的領域:(。

希望它可以幫助你!

1

不知道它是否有效,但如果您可以選擇更改它,我不會推薦它。這真的很容易在Rails遷移來改變一個列類型:

change_column :users, :uuid, :integer 
相關問題