作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法让 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/
我是一名优秀的程序员,十分优秀!