我想查询ActiveRecord
集合并选择记录,其中jsonb
字段内的字符串值包含在给定数组中。
型号:
create_table "dishes", force: :cascade do |t|
...
t.jsonb "params"
...
end
params
的内容始终具有以下结构:
{"procart_id"=>"4", "procart_config"=>{}}
我有一个给定的数组:
availabilities = ['4', '8', '11']
如何查询params.procart_id
在availabilities
数组中的Dish
型号?
我尝试了以下方法:
Dish.where("params::jsonb ->> 'procart_id' = any (array[?])", availabilities)
但它给了我错误:
ActiveRecord::StatementInvalid: PG::InvalidTextRepresentation: ERROR: invalid input syntax for type json
DETAIL: The input string ended unexpectedly.
CONTEXT: JSON data, line 1:
: SELECT "dishes".* FROM "dishes" WHERE (params::jsonb ->> 'procart_id' = any (array['4', '8', '11']))
1条答案
按热度按时间dgsult0t1#
在查询
Dish
模型和procart_id
查询之前,可以修改查询参数,如下所示: