jsonb 是什麼 PostgreSQL
支援的特有格式,而 b 指的是 binary ,因為 jsonb 是使用二進位來儲存格式
json 跟 jsonb 的差別
 
什麼時候會用到
 
在 rails 該怎麼使用
- new 一個專案
 
1  | > rails new jsonb_0602  | 
- gemfile 安裝 pg,並 bundle
 
1  | # Gemfile  | 
1  | > bundle  | 
- 把 database.yml 改成 pg
 
1  | 
  | 
- 把資料庫建立起來
 
1  | > rails db:create  | 
- 產生一個 model,例如發票 Receipt 設定其中一個欄位為 jsonb,例如發票資訊 
receipt_information設定完記得 migrate 
1  | > rails g scaffold Receipt receipt_type:string receipt_information:jsonb  | 
- 啟動 server
 
1  | > rails s  | 
到新增頁面
http://127.0.0.1:3000/receipts/new修改新增頁面,在 receipt_information 使用 fields_for
1  | # app/views/receipts/new.html.erb  | 
- params 清洗要這樣清洗
 
1  | def receipt_params  | 
- 到 console 確認資料
 
1  | > rails c  | 
資料成功存到資料庫了,但驗證呢?
- Rails 不支援 jsonb 的驗證
Ruby JSON Schema Validator 
使用教學:
- 安裝套件
 
1  | # Gemfile  | 
- 建立 schema,設定完重開 server
 
1  | # config/initializers/json_validator.rb  | 
- 在 model require 套件,並設定 validate 方法
 
1  | # app/models/receipt.rb  | 
- 台灣的統編有一定規則,並非純 8 個數字而已,上述僅供範例使用,若要嚴謹請另外找套件或者參考統編規則寫驗證
 
