Rails Where Association Exist
Rails 查詢關聯是否存在的方法,可以使用新的 missing 與 associated API 來縮短程式碼長度
我們時常會在 Rails 內撈取資料找有關聯或是還未關聯的資料,在寫法上我們通常都會使用 joins 搭配 where 使用。
例如:
class User
has_one :account
end
User.left_joins(:account).where(account: { id: nil })
User.joins(:account).where.not(account: {id: nil})
這樣寫可以 work 不過就是有那麼一點長,最近發現了新的 where API 可以縮短這兩個的寫法,就是使用 missing
與 associated
我們就可以改寫成:
User.where.missing(:account) # rails 6 up only
User.where.associated(:account) # rails 7 up only
這樣是不是看起來簡單多了呢?