使用Ruby on Rails和PostgreSQL自動(dòng)生成UUID的教程
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ù)庫(kù)職責(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)建了。同理也適用于已有記錄!
- 詳細(xì)講解PostgreSQL中的全文搜索的用法
- 使用Bucardo5實(shí)現(xiàn)PostgreSQL的主數(shù)據(jù)庫(kù)復(fù)制
- 在PostgreSQL的基礎(chǔ)上創(chuàng)建一個(gè)MongoDB的副本的教程
- 在PostgreSQL中使用數(shù)組時(shí)值得注意的一些地方
- 在PostgreSQL中使用日期類型時(shí)一些需要注意的地方
- 一個(gè)提升PostgreSQL性能的小技巧
- 在PostgreSQL中實(shí)現(xiàn)遞歸查詢的教程
- 在PostgreSQL上安裝并使用擴(kuò)展模塊的教程
- 介紹PostgreSQL中的范圍類型特性
- 深入解讀PostgreSQL中的序列及其相關(guān)函數(shù)的用法
相關(guān)文章
Ruby中一些基本語法知識(shí)點(diǎn)的羅列匯總
這篇文章主要介紹了Ruby中一些基本語法知識(shí)點(diǎn)的羅列匯總,包括Ruby中的注釋和標(biāo)識(shí)符等基礎(chǔ)內(nèi)容,需要的朋友可以參考下2015-05-05設(shè)計(jì)模式中的模板方法模式在Ruby中的應(yīng)用實(shí)例兩則
這篇文章主要介紹了設(shè)計(jì)模式中的模板方法模式在Ruby中的應(yīng)用實(shí)例兩則,經(jīng)典的項(xiàng)目經(jīng)理例子在這里又被套上用了^^需要的朋友可以參考下2016-03-03使用RVM實(shí)現(xiàn)控制切換Ruby/Rails版本
RVM 是Ruby Version Manager的縮寫,是一個(gè)命令行工具,它可以讓你輕松地安裝,管理和使用多個(gè)版本的Ruby.不同的rails項(xiàng)目使用等ruby和rails版本不一樣的時(shí)候,可以使用RVM自由切換。2017-06-06使用Ruby re模塊創(chuàng)建復(fù)雜的正則表達(dá)式
復(fù)雜的正則表達(dá)式很難構(gòu)建,甚至很難閱讀。Ruby的Re模塊可以幫助你利用簡(jiǎn)單的表達(dá)式構(gòu)建復(fù)雜的正則表達(dá)式2014-03-03