[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 裡面第一個參數是你要比對的欄位, 第二個參數是起始位置, »

[Rails] Railtie

初探 Railtie Railtie 為 Rails 與其他 component 提供了整合的接口, Rails::Application 繼承 Engine, Engine 又繼承 Railtie Rails 透過 Railtie 讀取 configurations, 建立 application 以及連接各個不同的 component (如: Active Record, Action View, Action Controller, Action Mailer), 使他們可以建立自己 »