[Rails] 使用 memcached 儲存 session

memcached 是一套 Name-Value Pair (NVP) 分散式記憶體快取系統, Key 的長度被限制在 250 characters, 儲存的資料不能超過 1 megabyte 要特別注意, memcached 不是 persistent data store, 只要關掉 memcahed 重開, 裡面的資料會通通不見 Rails 專案 Gemfile 內加上 gem 'dalli' 執行 bundle install 接著將 config/enviroment/production »

[Rails] belongs_to optional (關聯資料非必填)

某天新增 Category 到本來的 Book (many to many) 遇到一個問題 因本來 Book 有做 sti,新增 Book 的 Category 時,query 會用此 id 找每種繼承 Book 的 sti 資料 (但 type 只會記錄一種),因而噴錯 後來查詢才發現 rails 版本 5.1 後的版本 , belongs_to 的關聯 model 預設改為必填 須添加參數 optional: true 才可以允許非必填 e.g. class Book < ApplicationRecord »

[Rails] with_indifferent_access

with_indifferent_access 這個方法可以讓我們同時使用 string、symbol 操作 hash key with indifferent access 方法在 ActiveSupport::HashWithIndifferentAccess 類別裡 example: 另外,hash 也有全部轉 symbol 的方法 symbolize_keys 與全部轉 string 的方法 stringify_keys »

[Rails] 壓縮 migrate 檔

如果 rails 專案夠大,migrate 檔可能會有上百隻 有時候在執行 migration 的時候跑很久,有沒有辦法可以整理它 ? 答案是有的 使用 Squasher 這隻 gem。可以將 migrate 檔壓縮成一隻 Install: # Gemfile.rb gem 'squasher', '>= 0.6.0' // setup squasher $ bundle binstub squasher Use 官方建議停止所有的 preloading systems (e.g. spring »

[Rails] How to use multiple databases

原理跟做法這篇文章 Using multiple databases on Rails 說明的很清楚 secondbase 這個 gem 的概念跟上述文章是一樣的 不過 secondbase 最多只支援兩個 database, 如果需求是兩個以上的 database , 還是要自己實作 »

[Rails] config.x 自定義 configuration

Rails 4.2 後 , 可以使用 config.x 自定義一些配置 官方範例 搭配 config_for 範例 application.yml 設定如下 # config/application.yml default: &DEFAULT first: "hello" second: "world" development: <<: *DEFAULT production: <<: *DEFAULT »