Rails Ransack gem如何实现单条件下传入数组查询多个event_id值
问题原因
你当前使用的event_id_eq是Ransack的单值等值匹配谓词,内部会自动对传入值执行to_i类型转换,当传入数组时就会触发undefined method 'to_i' for Array的报错。
解决方案
直接将查询条件中的event_id_eq替换为支持多值匹配的event_id_in谓词即可,该谓词天然兼容单个值、数组两种输入格式,Ransack会自动处理参数适配:
ransack("job_name_cont" => job_name, "event_id_in" => event_id).result
替换后无需额外添加参数类型判断逻辑,不管传入的event_id是单值(如"90"、90)还是数组(如[145,147,148]),都可以正常生成对应的SQL查询条件:单值时生成等值匹配逻辑,数组时生成IN多值匹配逻辑。
内容的提问来源于stack exchange,提问作者Pa Stay
相关产品推荐
相关产品推荐

