最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Ruby on Rails和PostgreSQL自動(dòng)生成UUID的教程

 更新時(shí)間:2015年04月21日 14:47:40   投稿:goldensun  
這篇文章主要介紹了使用Ruby on Rails和PostgreSQL自動(dòng)生成UUID的教程,主要利用到了PostgreSQL的插件uuid-ossp,需要的朋友可以參考下

Rails 4 能原生態(tài)的支持Postgres 中的UUID(Universally Unique Identifier,可通用的唯一標(biāo)識(shí)符)類型。在此,我將向你描述如何在不用手工修改任何Rails代碼的情況下,用它來生成UUID。

首先,你需要激活Postgres的擴(kuò)展插件‘uuid-ossp':
 

class CreateUuidPsqlExtension < ActiveRecord::Migration
 def self.up
  execute "CREATE EXTENSION \"uuid-ossp\";"
 end
 
 def self.down
  execute "DROP EXTENSION \"uuid-ossp\";"
 end
end

你可以用UUID作為一個(gè)ID來進(jìn)行替換:

 

create_table :translations, id: :uuid do |t|
 t.string :title
 t.timestamps
end

在此例中,翻譯表會(huì)把一個(gè)UUID作為ID來自動(dòng)生成它。Postgresq的uuid-ossp擴(kuò)展插件所用算法和生成UUID的算法是不同的。Rails 4缺省使用的是v4算法. 你可以在這里: http://www.postgresql.org/docs/current/static/uuid-ossp.html 看到更多有關(guān)這些算法的細(xì)節(jié)。


然而,有時(shí)候你不想用UUID作為ID來進(jìn)行替換。那么,你可以另起一列來放置它:
 

class AddUuidToModelsThatNeedIt < ActiveRecord::Migration
 def up
  add_column :translations, :uuid, :uuid
 end
 
 def down
  remove_column :invoices, :uuid
 end
end

這會(huì)創(chuàng)建一個(gè)放置UUID的列,但這個(gè)UUID不會(huì)自動(dòng)生成。你不得不在Rails中用SecureRandom來生成它。但是,我們認(rèn)為這是一個(gè)典型的數(shù)據(jù)庫職責(zé)行為。值得慶幸的是,add_column中的缺省選項(xiàng)會(huì)幫我們實(shí)現(xiàn)這種行為:

 

class AddUuidToModelsThatNeedIt < ActiveRecord::Migration
 def up
  add_column :translations, :uuid, :uuid, :default => "uuid_generate_v4()"
 end
 
 def down
  remove_column :invoices, :uuid
 end
end

現(xiàn)在,UUID能被自動(dòng)創(chuàng)建了。同理也適用于已有記錄!

相關(guān)文章

最新評論

天镇县| 彭水| 昭觉县| 绍兴市| 万载县| 清徐县| 姜堰市| 磐安县| 上蔡县| 沙雅县| 工布江达县| 昌宁县| 龙口市| 江口县| 田阳县| 金湖县| 瓮安县| 揭东县| 合江县| 安泽县| 三穗县| 林州市| 上饶县| 黄浦区| 墨竹工卡县| 三原县| 昭觉县| 容城县| 延寿县| 大新县| 阿鲁科尔沁旗| 延川县| 徐汇区| 安吉县| 五大连池市| 丰顺县| 德昌县| 石阡县| 神木县| 康乐县| 广宗县|