亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

簡單介紹Ruby on Rails對PostgreSQL數組類型的支持

2020-10-29 19:40:53
字體:
來源:轉載
供稿:網友

 我非常高興在宣布Rails 4.0 現在支持 PostgreSQL 數組類型. 你可以方便的在migration通過 :array => true里創建數組類型的字段. 創建數組類型的字段的時候還可以添加其它的選項(length,default,等等)
 

create_table :table_with_arrays do |t| t.integer :int_array, :array => true # integer[] t.integer :int_array, :array => true, :length => 2 # smallint[] t.string :string_array, :array => true, :length => 30 # char varying(30)[]end

需要注意在是對數組類型的字段設置默認值的時候,你應該用Postgresql里的寫法({value,another value}), 如果你想設置數組類型的字段默認值為空數組的時候,你應該使用:default => '{}'
 

create_table :table_with_arrays do |t| t.integer :int_array, :array => true, :default => '{}' # integer[], default == [] t.integer :int_array, :array => true, :length => 2, :default => '{1}' # smallint[], default == [1]end


在Model里使用Postgresql數組的例子

我們現在有個包含first_name, last_name, nickname的user model, 其中nickname字段是數組類型. 下面的migration代碼會創建相應的表:
 

create_table :users do |t| t.string :first_name t.string :last_name t.string :nicknames, :array => trueend

并且對于這個表,我們有個簡單的model
 

class User < ActiveRecord::Base attr_accessible :first_name, :last_name, :nicknamesend

我們沒有對字段使用默認值,如果我們實例一個User 對象,代碼是這樣的.
 

john = User.create(:first_name => 'John', :last_name => 'Doe')

如果,我們調用john.nickname, 結果會返回nil, 并且在postgreSQL 里存儲的是NULL值.

我們通過下面的代碼可以在創建時,設置nickname屬性值 
 

john = User.create(:first_name => 'John', :last_name => 'Doe', :nicknames => ['Jack', 'Johnny'])

如果我們從數據庫獲取記錄,那么nick_name字段會轉變成一個數組,而不是返回字符串{Jack, Johnny}!。Rails 4.0擁有一個純Ruby數組轉換器,但是如果你想讓轉換過程加速,那么就可以使用之前提到的 pg_array_parser gem。PgArrayParser 擁有一個基于C的擴展,還有一個JRuby的Java的實現(即使這個gem現在在JRuby上存在些問題,我正在嘗試去解決這個問題。)

有一個重點需要注意的,就是當在一個model中和數組(或者其他可變數值)交互的時候。ActiveRecord現在并沒有跟蹤"destructive",或者更改發生的地方。這包括數組的push和pop操作。如果你需要使用"destructive"更新,你必須使用call<屬性>_will_change!這樣可以讓ActiveRecord知道你需要更改屬性的值。對于我們的這個User model,如果你想在nickname后面追加元素,你可以這樣做:
 

john = User.first john.nicknames += ['Jackie boy']# 或者john.nicknames = john.nicknames.push('Jackie boy')# 任何時候,屬性通過"="賦值,ActiveRecord會跟蹤這個更改john.save john.reloadjohn.nicknames#=> ['Jack', 'Johnny', 'Jackie Boy'] john.nicknames.popjohn.nicknames_will_change!# '#pop'操作會改變數組的值,所以我們需要告訴ActiveRecord它將會發生更改john.save

 

最后一項在Postgresql中使用數組要注意的事情是: 數組沒有元素數量限制,可以是多維數組,但是在使用多維數組時, 子數組元素個數必須是一樣的.

 

[[1,2,3], [2,3,4], [4,5,nil]]# 在PostgreSQL 可用,每個子數組元素個數一樣 [1,2,[3,4]]# 不可用的數組

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美人在线视频| 国产在线观看精品一区二区三区| 伊人久久五月天| 欧美成人精品激情在线观看| 国产精品视频999| 欧美电影免费在线观看| 亚洲色图18p| 日韩欧美成人网| 欧美激情视频网站| 精品视频在线播放色网色视频| 亚洲人成在线播放| 日韩欧美高清视频| 91亚洲精品视频| 久久久www成人免费精品| 欧美日韩午夜激情| 欧美孕妇性xx| 97婷婷大伊香蕉精品视频| 色综合久综合久久综合久鬼88| 日韩欧美亚洲综合| 在线免费看av不卡| 伊人久久男人天堂| 亚洲精品在线91| 亚洲欧美在线一区二区| 国产美女久久精品香蕉69| 欧美性受xxxx白人性爽| 国产精品一区=区| 久久手机精品视频| 欧美激情成人在线视频| 久久6免费高清热精品| 成人激情视频在线观看| 亚洲免费人成在线视频观看| 欧美精品九九久久| 国产日韩亚洲欧美| 亚洲色图17p| 成人亲热视频网站| 在线激情影院一区| 伊人久久久久久久久久久久久| 中文字幕日韩免费视频| 成人黄色午夜影院| 久久青草精品视频免费观看| 国产精品久久一区主播| 亚洲综合一区二区不卡| 国内精品久久久久影院 日本资源| 久久影院免费观看| 久久久噜久噜久久综合| 精品久久久国产| 亚洲国内高清视频| 亚洲女同精品视频| 国产综合在线看| 全亚洲最色的网站在线观看| 91夜夜未满十八勿入爽爽影院| 成人免费看黄网站| 这里只有精品在线播放| 中文字幕日韩在线观看| 成人欧美一区二区三区在线湿哒哒| 欧美成人精品三级在线观看| 亚洲欧美日韩网| 97婷婷大伊香蕉精品视频| 久久久精品中文字幕| 中文字幕成人在线| 91精品啪在线观看麻豆免费| 日韩综合中文字幕| 欧美国产高跟鞋裸体秀xxxhd| 精品国产美女在线| 欧美日韩第一页| 51精品在线观看| 日韩精品视频观看| 国产日韩欧美中文在线播放| 国产一级揄自揄精品视频| 国产欧美一区二区三区在线看| 亚洲人在线视频| 精品久久香蕉国产线看观看亚洲| 国产精品久久久999| 亚洲午夜久久久久久久| 亚洲mm色国产网站| 欧美三级免费观看| 91av视频在线免费观看| 懂色av中文一区二区三区天美| 国产精品aaa| 一本色道久久88综合日韩精品| 精品视频久久久久久| 欧美黑人性视频| 日韩**中文字幕毛片| 久久99国产精品久久久久久久久| 精品亚洲国产视频| 91精品久久久久久久久中文字幕| 亚洲精品一区在线观看香蕉| 成人国产精品日本在线| 亚洲缚视频在线观看| 日韩av影片在线观看| 精品久久久久久国产91| 国产mv久久久| 在线成人中文字幕| 欧美成人在线影院| 庆余年2免费日韩剧观看大牛| 国产精品亚洲欧美导航| 久久国产精品电影| 亚洲综合中文字幕在线| 美女av一区二区三区| 九九热最新视频//这里只有精品| 亚洲第一精品夜夜躁人人躁| 日本精品性网站在线观看| 中文字幕一区电影| 欧美日本亚洲视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 一区二区三区四区在线观看视频| 欧美激情性做爰免费视频| 亚洲女成人图区| 欧美性少妇18aaaa视频| 日韩在线小视频| 国产精品h在线观看| 最近中文字幕mv在线一区二区三区四区| 亚洲人成绝费网站色www| 国产亚洲欧美日韩精品| 国产精品美女无圣光视频| 欧美性感美女h网站在线观看免费| 有码中文亚洲精品| 欧美久久精品午夜青青大伊人| 亚洲福利在线观看| 亚洲精品福利在线| 精品国产鲁一鲁一区二区张丽| 亚洲国产欧美自拍| 久热国产精品视频| 国产精品情侣自拍| 91精品国产91久久久久久最新| 91欧美精品午夜性色福利在线| 国产精品中文字幕在线观看| 97视频在线看| 欧美精品在线极品| 九九九热精品免费视频观看网站| 欧美日韩免费看| 日本精品va在线观看| 欧美激情中文网| 91成品人片a无限观看| 国产视频精品自拍| 日韩av在线一区二区| 美日韩精品免费观看视频| 亚洲男人第一网站| 亚洲高清一区二| 18一19gay欧美视频网站| 色悠久久久久综合先锋影音下载| 成人黄色影片在线| 国产精品第七影院| 亚洲精品国产福利| 国产精品精品一区二区三区午夜版| 国产精品一久久香蕉国产线看观看| 精品毛片网大全| 日韩电影免费在线观看中文字幕| 97热精品视频官网| 国产成人精品一区二区在线| 精品久久久久久中文字幕大豆网| 久久亚洲私人国产精品va| 欧美亚洲国产精品| 欧美裸体视频网站| 亚洲高清久久网| 日韩免费看的电影电视剧大全| 国产福利成人在线| 国产婷婷97碰碰久久人人蜜臀| 欧美国产日韩一区二区三区| 精品偷拍一区二区三区在线看| 精品人伦一区二区三区蜜桃网站| 国产精品免费观看在线| 91成人国产在线观看| 美女撒尿一区二区三区|