2012-01-17 36 views

回答

3

你会做这样的事情:

users = User.where('greeting in (?)', %w{hello hi hey}) 

Rails会知道该怎么做一个数组,%w{hello hi hey},作为一个占位符的值。或者,如果你已经有了一个字符串数组:

h_words = [ 'hello', 'hi', 'hey' ] 
users = User.where('greeting in (?)', h_words) 
# or even this 
users = User.where('greeting in (:words)', :words => h_words) 

,或者可能是最Railsy的方式,像这样:

users = User.where(:greeting => %w{hello hi hey}) 
+0

是否'User.where( '在问候()?',h_words )'需要'h_words'中的数组元素才能保证sql注入安全?做轨道,就好像PHP在准备好的声明中那样做了吗? – user482594 2012-01-17 04:06:40

+0

@ user482594:ActiveRecord将负责正确地转义和编码占位符值,以便将它交给一个普通字符串数组。如果你使用了字符串插值,你必须自己做,所以除非绝对必要,否则不要这样做。 – 2012-01-17 04:11:13