4

私はRubyonRails 3.2.2を使用しており、次の生のSQLを実行しています。

sql = "INSERT INTO articles (`title`, `user_id`) VALUES #{inserts.join(", ")}"
ActiveRecord::Base.connection.execute(sql)

exec_insertただし、Ruby on Railsメソッドを使用したいのですが、それに関する適切なドキュメントがありません。exec_insertでは、このメソッドを使用して、上記と同じものを作成するにはどうすればよいですか(おそらくのようなものを使用しますArticle.connection.exec_insert(...))?

4

2 に答える 2

3

exec_queryこれに使用できます

ActiveRecord::Base.connection().exec_query('INSERT INTO articles(title, user_id) VALUES($1, $2)', 'someQueryName', [[nil, title], [nil, user_id]])

$ 1、$ 2はpostgresでprepareクエリをバインドするために使用される規則であるため、私はPostgresに対してのみ$ 1、$2を使用してテストしたことに注意してください。

MySqlと他のデータベースでは異なる場合があります。Mysqlの場合?、$ 1、$ 2などではなく、データベースがバインディングを提供する方法によって異なります。

また、いくつかのために設定する必要があるかもしれませんprepare_query: true。参照-http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#exec_query

于 2018-07-05T18:24:52.617 に答える
-2

exec_insertは内部メソッドであり、おそらくここで必要なものではありません。あなたが持っているものは大丈夫なはずです。

あなたが本当にそれを使うことに夢中になっていて、例が必要な場合、テストスイートはおそらくそれらを見つけるのに最適な場所です。一例はここにあります。

于 2012-05-16T06:05:29.283 に答える