我有一個stage表,它有一個jsonb列,名為title。
title的值是一個ruby的hash值,例如:{en: "A", de: "A" }
現在我寫了以下范圍,用于根據Rails模型中的標題搜索一個stage
scope :search, ->(query) { where('title @> ? ', { "#{I18n.locale}" : "%#{query}%" }.to_json).any? }
但它并不作業,它給我的是RSpec測驗中的所有專案。
uj5u.com熱心網友回復:
你需要使用->> JSON運算子和ILIKE來做模式匹配:
scope :search, ->(query){
where("title->>'#{I18n.locale}' ILIKE?", "%#{query}%")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/307628.html
標籤:
