我有一个工作代码,如果满足条件,它会过滤掉一行
ransacker :custome_search, formatter: proc { |v|
user = Util.new(param: v.strip).user. # gets the data from an external service
id = user.present? ? user.id : nil
id = id.presence
} do |parent|
parent.table[:id]
end
和我的索引页中的过滤器
filter :custome_search, label: 'Custom Data Search:', filters: ['equals']
这个工作正常,但现在我必须改变它以适应多个元组,所以我将代码更改为
ransacker :custome_search, formatter: proc { |v|
users = Util.new(param: v.strip).find_users
ids = users.present? ? users.pluck(:id) : nil # now returns an array instead of just one id [1,2,3]
ids = ids.presence
} do |parent|
parent.table[:id]
end
上面的代码显示零结果,因为内部形成的查询结果是
SELECT COUNT(*) FROM (SELECT 1 AS one FROM "users" WHERE "users"."id" = NULL LIMIT $1 OFFSET $2) subquery_for_count /*controller:users,action:index*/ [["LIMIT", 30], ["OFFSET", 0]]
但如果我做一个
ids=ids.first
同样将显示一行,如何更改我的代码以在索引页面上显示多行我正在使用活动管理 2.0.0
好吧,搜查代码很好,我只需要更改索引页面上的过滤器,其中任何一个都可以工作
filter :custome_search, label: 'Custom Data Search:', filters: ['in']
或者
filter :custome_search_in, label: 'Custom Data Search:', as: :string
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句