簡體   English   中英

在Rails中查詢Postgres整數數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM