2011-04-04 8 views
0

これは動作していないようです:私は2番目の郵便番号を持つ単純なfind_byをすればSQL find in(?)コールはどのように実行しますか?

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

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

=> [ ] 

しかし、それは結果を返します:

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

試してみてください。(コメント)

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

「OR」文を含めるようにその構文を変更するにはどうすればよいですか?私が探している最終結果は、Railsヘルパーではなく、Rails/SQL構文の中にあるものです。 – 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] 
関連する問題