ActiveRecordで生insert文を発行。影響結果を取得したい。
いやぁ、、、、バカでした・・・。
答えを知るのに凄く時間をかけてしまったので備忘と言うことで。
query = "INSERT IGNORE INTO ..." ActiveRecord::Base.connection.execute(query)
で影響結果を知りたいと思ったのですが、、、どうやって取得するか15分ほどググってしまいました。いつまでたっても情報にヒットしないんでRailsAPIを眺めみるとすぐに解決!!。
query = "INSERT IGNORE INTO ..." affected_rows = ActiveRecord::Base.connection.insert(query)
これでいいや〜と思ってコーディングを継続していたら、何だか溜まっていくテストデータの様子がおかしい。affected_rowsを確認してみると"0"ばっか返してる。ほとんど"1"になる想定なんだけど・・・・・。そしてRailsApiを眺め返してみると。。
insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) Returns the last auto-generated ID from the affected table. update_sql(sql, name = nil) Executes the update statement and returns the number of rows affected.
まじで・・・・。ちゃんと読んでませんでしたよ。。
query = "INSERT IGNORE INTO ..." affected_rows = ActiveRecord::Base.connection.update(query)
結局updateを使って解決しました
追記
検索文字列(同僚に言われたので) 直接 SQL count カウント 影響数