エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
ActiveRecordのupsert_allの挙動について
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
ActiveRecordのupsert_allの挙動について
この時、例えば既に保存されているレコードに関して姓と名の間に半角スペースが必要だったのでレコード1... この時、例えば既に保存されているレコードに関して姓と名の間に半角スペースが必要だったのでレコード1~3を更新したいすると次のように書きたくなります。 Employee.upsert_all( [ { id: 1, name: '野比 のび太' }, { id: 2, name: '剛田 武' }, { id: 3, name: '骨川 スネ夫' } ] ) が、この場合だと ActiveRecord::NotNullViolation: Mysql2::Error が発生してしまいます 理由はレコードが新規追加だったケースの時に問題があるSQLになってしまうからです。 新規追加だったケースの時に問題がある理由 上記のupsert_allを実行したときのSQLは次のようになります INSERT INTO `sample_database`.`employees`(`id`,`name`) V