2013-08-22 69 views
0

每当在Rails中创建新模型时,将使用id字段来标识它。Rails为每个创建的新模型创建散列

我想知道是否有一种简洁的方式来创建一个独特的散列,只要模型以类似于id的方式创建。

+0

您可以添加一列,并为其分配一个before_create回调该属性 – Santhosh

回答

1

如果你正在寻找一个永久唯一的哈希,你可以添加一个名为unique_id列,并完成类似:

class Foo < ActiveRecord::Base 
    before_save :generate_unique_id 

    def generate_unique_id 
    # generate a random hex string using trickery: 
    self.unique_id = rand(36**12).to_s(16) # => "22b0433e3d9ae776" 
    # generate a 12-char random string a-z0-9: 
    self.unique_id = rand(36**12).to_s(36) # => "os0w9cl8xi48" 
    # or, if you want to do something more obvious: 
    self.unique_id = SecureRandom.hex(6) # => "ba191acc80ef" 
    # or, if you want a legitimate UUID: 
    self.unique_id = SecureRandom.uuid # => "72569edd-1841-4fd9-af05-edf66a58b74b" 
    end 
end