2010-04-16 42 views
4

我創建一個Rails 3應用程序,將分散,我需要使用UUID主鍵我的表,這將是最好的寶石,作業的插件。我還想知道是否有可能在ActiveRecord中使用多態關係而不使用polymorphicable_type列,因爲我使用的是UUID。使用UUID作爲在軌和多晶型關係的主鍵

我創建了一個演示http://github.com/boriscy/uuidrails3使用UUID作爲主鍵,你應該檢查模塊UUIDHelper內的lib /以及所有的遷移。不需要在數據庫中添加主鍵,只需要一個索引,因爲主鍵驗證字段的唯一性,但我們不需要使用UUID。

+0

好吧,那麼選擇哪個表包含UUID 12345記錄的標準是什麼? – 2010-04-16 19:04:12

+0

當您使用UUID作爲鍵時,默認情況下您會使用多態關係,請嘗試一些JOINS,您將看到您可以與任何表進行連接。 – 2010-04-18 03:50:39

+0

我從您提供的鏈接中檢出了您的應用。問題:如果你使用uuids作爲你的主要使用者,你如何處理髮送給你的發現者的畸形uuids? – rip747 2010-07-09 13:32:06

回答

6

this file lib目錄中,並添加爲一個初始化:

class ActiveRecord::Base 
    set_primary_key :uuid 

    before_create :set_uuid 

    def set_uuid 
    self.uuid = UUID.generate(:compact) 
    end 
end 

至於關係,弗拉德是正確的ActiveRecord的需要知道的記錄是表中找到它。如果你想要這種功能,可以嘗試其他的東西,比如MongoMapper。

+0

我想我可以使用id而不是uuid,反正它是一樣的。這將更加方便。 – 2010-04-17 23:17:59

+0

是的,但在這種情況下,請確保將遷移中的id列更改爲字符串(或更寬的整數字段)。 – mckeed 2010-04-18 17:39:04