5
我使用PG數據庫運行rails 4.2。Rails where子句將數據存儲爲數組
我已經存儲在數據庫中的項目,如(型號Item
):
:something => ["1", "2", "3"]
我想獲得Item.where(:something.include? => "3")
顯然,這是行不通的 - 但你怎麼意思做這在鐵軌?
我使用PG數據庫運行rails 4.2。Rails where子句將數據存儲爲數組
我已經存儲在數據庫中的項目,如(型號Item
):
:something => ["1", "2", "3"]
我想獲得Item.where(:something.include? => "3")
顯然,這是行不通的 - 但你怎麼意思做這在鐵軌?
據documentation,這樣的事情應該工作:
Item.where('something @> ARRAY[?]::varchar[]', ['3'])
除了@potashin答案,有一個較短的方式做(見documentation)如果你需要得到一個元素上的項目。
# Items for a single something
Item.where("'3' = ANY (something)")
# Or using '?'
Item.where('? = ANY (something)', '3')
# Items for multiple something
Item.where('something @> ARRAY[?]::varchar[]', ['3', '4'])
根據文檔,當我們只查找一個元素時,有一個較短的方法來使用。 'Item.where(「'3'= ANY(something)」)' 我相當窒息,沒有更簡單的activerecord的方法來做到這一點! –
@MaxChrétien:我可以(或您)在回答中包含您的評論嗎?我認爲這可以被認爲是相當有用的。 – potashin
評論被拒絕。 _此編輯旨在解決該帖子的作者,作爲編輯沒有意義。它應該被寫爲評論或答案._ –