[英]Querying a Postgres array of integers in Rails
我的模型有一個pg數組,我用它來存儲整數
使用我從其他問題中找到的方法查詢會產生錯誤或給出空的結果
MyModel.where("? = ANY (myarray)", 42)
給
PG::UndefinedFunction: ERROR: operator does not exist: integer = text
和
MyModel.where("myarray @> '{?}'", 42)
給出一個空的結果,但我確實有一個42的模型作為數組中的一個int
#<MyModel:0x007f9a77dd5608> {
:id => 170,
:myarray => [
[0] 42,
[1] 43,
[2] 58,
[3] 61,
[4] 63
]
有沒有一種特殊的方法來查詢Rails中postgres數組中的整數(或浮點數)?
遷移
class AddMyarrayToMyModel < ActiveRecord::Migration
def change
add_column :my_models, :myarray, :integer, array: true, default: []
add_index :my_models, :myarray, using: 'gin'
end
end
和架構
t.integer "myarray", default: [], array: true
試試這些:
MyModel.where("? = ANY(myarray)", '{42}')
要么
MyModel.where("myarray @> ?", '{42}')
或者(根據York Yang的評論,在PG 9.6上)
MyModel.where("? = ANY(myarray)", '42')
PG :: UndefinedFunction:ERROR:運算符不存在:integer = text
從這條消息看來, myarray
實際上是一個類型text
的數組。 檢查該列以確保其類型正確。
似乎有一個數組名稱的問題,因為有一個類似名稱的關聯和rails automagic與它相撞
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.