ruby-on-rails – 如何将数据传递到rails 3中的IN查询

栏目: Ruby · 发布时间: 6年前

内容简介:翻译自:https://stackoverflow.com/questions/9867744/how-to-pass-data-to-in-query-in-rails-3

我正在使用rails 3和sqlite db.

使用IN查询.

当前将项的字符串变量传递给IN查询.

但是在执行该查询时需要”因此它不起作用.

如何克服这种情况?

这是我的代码

items = ""
items << "#{@invitation_user1.id}" << "," << "#{@invitation_user2.id}" << "," << "#{@user1.id}" << "," << "#{@user2.id}" << "," << "#{@user2.id}" << "," << "#{@profile1.id}" << "," << "#{@profile2.id}"
@activities = Version.where("item_id IN (?)","#{items}")

尝试过items.to_i,items.to_s但是没有用.

在日志我可以看到这一点.

SELECT "versions".* FROM "versions" WHERE (item_id IN ('19,20,4,1,1,4,1'))

但我所需要的只是

SELECT "versions".* FROM "versions" WHERE (item_id IN (19,20,4,1,1,4,1))

你可以直接传入一个数组.Rails很聪明,可以用它做正确的事情:

items = [
  @invitation_user1.id,
  @invitation_user2.id,
  @user1.id,
  @user2.id,
  @profile1.id,
  @profile2.id
]

@activities = Version.where("item_id IN (?)", items)
# or equivalently:
@activities = Version.where(:item_id => items)

这比您的变体更受欢迎,因为Rails正确处理所使用的数据库适配器的所有传递值的转义.

翻译自:https://stackoverflow.com/questions/9867744/how-to-pass-data-to-in-query-in-rails-3


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical Algorithms for Programmers

Practical Algorithms for Programmers

Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99

Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码