[Rails] 使用 merge 合併查詢子句

在寫 rails query 時, 常常會寫出這樣的句子 User.joins([posts: :likes]).where('posts.created_at': 30.days.ago..Time.current).order("posts.id DESC") 如果條件越來越複雜, query 會寫得越來越長 這時候可以使用 ActiveRecord::SpawnMethods的 merge 來整理 query 假設我們有三個 tables class User < ApplicationRecord »

[Rails] multi environment credentials

在 Rails 6 以後, credentials 支援多環境 Add support for multi environment credentials. (Pull Request) (Rails 5.2+ 想要使用 multi environment 需要做一些調整, 可以參考此篇 comment) example: 使用版本 Rails: 6.1.0.alpha, Ruby: 2.6.3 建立 credential (development、production) »

[Rails] 在 where 裡使用 SQL function substring

最近碰到一個需求, A model after_create 後要用新建的 instance, 去跟 B model 的欄位比對字串 這時候可以使用 like, 不過因為我只想用 A model instance colmun 比對 B modle column 前 8 碼 這時可以使用 substring B.where("substring(text, 1, #{tac.length}) = #{tac}") substring 裡面第一個參數是你要比對的欄位, 第二個參數是起始位置, »