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 個數字而已,上述僅供範例使用,若要嚴謹請另外找套件或者參考統編規則寫驗證