2011-04-04 3 views
0

Это, кажется, не работает:Как вы выполняете поиск SQL в (?) Вызове?

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

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

=> [ ] 

Однако, если я простой find_by со вторым почтовым индексом, он возвращает результат:

CardSignup.find_by_zip_code("07034") 

=> Object<x.. 

Что я делаю неправильно?

ответ

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<x.. 
0

Try:

CardSignup.find_by_zip_code(@zip) 

Edit (с комментариями):

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"]) 
+0

Как я могу изменить этот синтаксис, чтобы включить в него инструкцию 'OR'? Конечный результат, который я ищу, является чем-то вроде синтаксиса Rails/SQL, а не помощником Rails. – Trip

+0

Какую версию Rails вы используете? –

+0

http://stackoverflow.com/questions/1441791/how-to-select-where-id-in-array-rails-activerecord-without-exception –

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

Just use %w[07005 07034 07035] 
Смежные вопросы