cha*_*nya 7 database sqlite activerecord ruby-on-rails
我正在使用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}")
Run Code Online (Sandbox Code Playgroud)
尝试过items.to_i,items.to_s但是没有用.在日志我可以看到这一点.
SELECT "versions".* FROM "versions" WHERE (item_id IN ('19,20,4,1,1,4,1'))
Run Code Online (Sandbox Code Playgroud)
但我需要的只是
SELECT "versions".* FROM "versions" WHERE (item_id IN (19,20,4,1,1,4,1))
Run Code Online (Sandbox Code Playgroud)
Hol*_*ust 26
你可以直接传入一个数组.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)
Run Code Online (Sandbox Code Playgroud)
这比您的变体更受欢迎,因为Rails正确处理所使用的数据库适配器的所有传递值的转义.
| 归档时间: |
|
| 查看次数: |
14113 次 |
| 最近记录: |