好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 簡單介紹Ruby on Rails對PostgreSQL數組類型的支持

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

熱門標簽:滴滴外呼系統(tǒng) 百度地圖標注自定義圖片 常德電銷平臺外呼系統(tǒng)軟件價格 高德地圖標注客服 地圖標注賺錢項目注冊 電銷機器人廠商代理 湖州u友防封電銷卡 白銀外呼paas系統(tǒng) 徐州網絡外呼系統(tǒng)哪個好

 我非常高興在宣布Rails 4.0 現在支持 PostgreSQL 數組類型. 你可以方便的在migration通過 :array => true里創(chuàng)建數組類型的字段. 創(chuàng)建數組類型的字段的時候還可以添加其它的選項(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代碼會創(chuàng)建相應的表:
 

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

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

class User  ActiveRecord::Base
 attr_accessible :first_name, :last_name, :nicknames
end

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

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

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

我們通過下面的代碼可以在創(chuàng)建時,設置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",或者更改發(fā)生的地方。這包括數組的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.reload
john.nicknames
#=> ['Jack', 'Johnny', 'Jackie Boy']
 
john.nicknames.pop
john.nicknames_will_change!
# '#pop'操作會改變數組的值,所以我們需要告訴ActiveRecord它將會發(fā)生更改
john.save

 

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

 

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

您可能感興趣的文章:
  • PostgreSQL中使用數組改進性能實例代碼
  • Mybatis調用PostgreSQL存儲過程實現數組入參傳遞
  • 在PostgreSQL中使用數組時值得注意的一些地方
  • PostgreSQL 對數組的遍歷操作

標簽:公主嶺 永州 普洱 三沙 梧州 遼寧 張家界 荊門

巨人網絡通訊聲明:本文標題《簡單介紹Ruby on Rails對PostgreSQL數組類型的支持》,本文關鍵詞  簡單,介紹,Ruby,Rails,對,PostgreSQL,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《簡單介紹Ruby on Rails對PostgreSQL數組類型的支持》相關的同類信息!
  • 本頁收集關于簡單介紹Ruby on Rails對PostgreSQL數組類型的支持的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 女人与牲囗佼配| 97韩国电影午夜理伦三级| XXOO好深好爽动态图gfi| 久久国产人妻午夜一区二区三区| 黄色小说软件| 成年人爱爱视频| 久欠免费看少妇高潮A片| 粉嫩紧窄的蜜一开一| 国产91午夜在线| 和阿同居的日子2三级| 免费看美女无内衣内裤诱人| 奶头被外卖员摸得受不了| 欧美精品黄页在线观看视频| 堕落童男电影| gogo专业大尺度人体国模吧337p| 色污网站| 成年男人裸j照无遮挡| 横恋母上卷| 国产97在线/亚洲| 936tv佳人直播app| q2002午夜| 在线看h片| 波多野结衣无码视频一区二区在线| 小说操| 免费h无遮挡动漫在线看| 冕宁县| 高黄H文多p混交NP| 美女脱个精光图片| 毛片在线视频在线播放| 色狠狠成人综合色| 黄色一级片免费| 久色乳综合思思在线视频| 嫩草影院2019| 国产999视频在线观看| 男人的天堂激情视频| 国产精品久久久久久无码公交车站| 寡妇高潮A片免费看| 校花爽好大快深点h| 我从不忠截取的一段画面| 精品成人免费播放国产片| 中文字幕无码亚洲幕成a人蜜蜜|