Rails 3 ActiveRecord::Base.connection.execute メソッドと一緒に使用したいパラメーターに関する構文の質問があります。私はこれと数時間戦っていますが、インターネット上でこの特定の質問に対する答えが見つからないようです.
データベースはMySQLです。
IN条件ステートメントを使用してSELECTを使用して一時テーブルを作成する必要があります.INがチェックする値のリストはパラメーター-rails配列です。コードは次のようになります。
arr = [1,2,3]
ActiveRecord::Base.connection.execute("CREATE TEMPORARY TABLE things SELECT * FROM objects WHERE objects.id IN #{arr}")
MySQL 構文エラーが発生しました。
ActiveRecord::Base.connection.execute("CREATE TEMPORARY TABLE things SELECT * FROM objects WHERE objects.id IN #{(arr)}")
再び MySQL 構文エラー!
ActiveRecord::Base.connection.execute("CREATE TEMPORARY TABLE things SELECT * FROM objects WHERE objects.id IN (#{arr})")
MySQL 構文エラー
上記の試みは、この質問と回答に対応しています: レールで任意のパラメーター化された SQL を実行する方法
find_by_sql のような方法で使用しようとしましたが、それでもエラーが発生します。
ActiveRecord::Base.connection.execute(["CREATE TEMPORARY TABLE things SELECT * FROM objects WHERE objects.id IN (:ids)",{:ids => arr }]) - obviously, I get an MySQL error.
明らかな何かが欠けていますか?助けてください!私はこれをまさにこの方法で必要とします(たとえば、まさにそのような条件で一時テーブルを作成します)。そうしないと、これに基づくより複雑なクエリは機能しません。ありがとう!