你如何在(?)调用中执行SQL查找?

时间:2011-04-04 11:38:19

标签: mysql ruby-on-rails arrays conditional

这似乎不起作用:

@zip = %w[07005, 07034, 07035]

CardSignup.find(:all, :conditions => ["zip_code IN (?)", @zip])

=> [ ]

但是,如果我用第二个邮政编码做一个简单的find_by,它会返回一个结果:

CardSignup.find_by_zip_code("07034")

=> Object<x01231 ..

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您对阵列的实现不正确。你的方式就是逗号是每个数组对象的一部分:

>> %w[07005, 07034, 07035]
=> ["07005,", "07034,", "07035"]

你应该删除逗号来实现这个:

>> %w{07005 07034 07035}
=> ["07005", "07034", "07035"]

或:

>> [07005, 07034, 07035]
=> [07005, 07034, 07035]

所以完整的实现是:

@zip = %w{07005 07034 07035}

CardSignup.find(:all, :conditions => ["zip_code IN (?)", @zip])

=> [Object<x01231 ..

答案 1 :(得分:2)

Don't use comma in %w[07005, 07034, 07035]

Just use  %w[07005 07034 07035]

答案 2 :(得分:0)

尝试:

CardSignup.find_by_zip_code(@zip)

编辑(来自评论):

How to select where ID in Array Rails ActiveRecord without exception

@zip = ["07005", "07034", "07035"]
CardSignup.find(:all, :conditions => ["zip_code IN (?)", @zip])

CardSignup.find_all_by_zip_code(["07005", "07034", "07035"])