gpt4 book ai didi

ruby-on-rails - 有没有办法让 ActiveRecord 使用 AR finders 写入 'WHERE (a,b) in ((1,2),(3,4))'

转载 作者:行者123 更新时间:2023-12-04 06:01:15 25 4
gpt4 key购买 nike

有没有办法让 ActiveRecord 使用 AR 查找器在 ((1,2),(3,4)) 中写入“WHERE (a,b)”。

我觉得

Widget.find(:all, :conditions => ['(a,b) in (?)', [[1,2][3,4]]])

但是内部数组被转换为 YAML?!?!现在我正在使用 find_by_sql。有没有更好的写法?

最佳答案

你可以这样做:

Widget.all(:conditions => ["(a,b) in ((?),(?))", [1,2], [3,4]])

尽管如果您有可变数量的值,这并不理想。听起来是给 ActiveRecord 打补丁的好机会!

更新:可变数量值的组合。仍然比 find_by_sql 好...但你是对的,它应该由 AR 原生支持。

values = [[1,2],[3,4]]
Widget.all(:conditions => ["(a,b) in (#{Array.new(values.length,'(?)').join(',')})", *values])

关于ruby-on-rails - 有没有办法让 ActiveRecord 使用 AR finders 写入 'WHERE (a,b) in ((1,2),(3,4))',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2214133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com