2010-12-02 16 views
1

jqueryからURLリクエスタ経由でレールコントローラに配列を送信しています。Rails 3 where queries

@logs = Log.where(['"logs"."id" IN (?)', log_array]) 
:私は私のコントローラでこれを行うとき

log_array = (params[:log_ids]) 
logger.debug "This is the array #{log_array.to_a}" 

は私が

This is the array 85,84,83,82 

は、私が選択したすべてのログを取得するには、このクエリをしようとしています私のサーバーログにこれを取得します

これはサーバーログに記録されます

SELECT "logs".* FROM "logs" WHERE ("logs"."id" IN ('85,84,83,82')) 

それは、文字列のようにARRYを置くように思えこの

SELECT "logs".* FROM "logs" WHERE ("logs"."id" IN (85,84,83,82)) 

ようになりsould。

配列に対してSQLを正しく作成する方法はありますか?

+0

log_idsは文字列として設定されていますか?もしそうなら、私はそれらにto_iを呼び出す必要があるのだろうかと思います。しかし、bowserseniorは最高の答えを持っています。 –

答えて

3

またはLog.where(:::ID =>のparams [log_ids])これを試してみてください。

4

あなたもSQL-ishを作っています。あなたは()の良さを利用したい場合は

Log.find_all(params[:log_ids]) 
+0

私は言うことを忘れました。これは動作しません。配列の最初のインスタンスのみを返します。 –

+0

申し訳ありませんが、正しい方法は 'find'ではなく' find_all'です。更新された回答をご覧ください。 – bowsersenior