我的表t.string :appr_status , type: Array, default: []
和t.integer :employee_id
中有以下列,我当前的查询是
@reg_req = AttendanceChangeRequest.where("employee_id IN (?)", emp_id_arr).to_a
其中emp_id_arr
是一个类似[1,2,3]
的数组。我想将上述查询更改为此。
AttendanceChangeRequest.where('(employee_id IN = ? AND appr_status contain= ?) ', emp_id_arr , appr_array )
其中appr_array = [“1_app”,“2_app”,“3_appr”,“4_appr”]就是这个。我想获取所有记录,当任何一个雇员id出现在emp_id_arr
的传递数组中时,appr_status列应该包含传递给查询的数组中的所有值(即{{ 1}})如果一个值也不存在那么我不想要那个记录。如何写这个查询?
答案 0 :(得分:0)
你需要喜欢
AttendanceChangeRequest.where("'1_app' = ANY (appr_status)")
这将正常工作。
答案 1 :(得分:0)
试试这个:
AttendanceChangeRequest.where(employee_id: emp_id_arr,appr_status: appr_array)
这就是你在寻找什么?
答案 2 :(得分:0)
AttendanceChangeRequest.where(“ array_to_string(appr_status,'||')ILIKE:name”,名称:“%您的期望搜索能力值%”)
这就是您要查找的内容? 该查询会做什么。