Railsでデータが登録されない。
背景
ActiveRecordを使用してデータを保存するとき、データが保存されていない時があります。
バリデーションですべることが多いので、整理しておきます。
環境
項目 | 内容 |
---|---|
OS.Catalina | v10.15.4 |
Ruby | v2.5.1 |
Ruby On Rails | v5.2.4.3 |
内容
あまり機会はないですが、例えば初期ユーザを作成するようなサービスがあった時。
app/lib/make_default_data_service.rb
1 default_user = User.new
2 default_user.update_attributes(
3 id: 1,
4 password: 1111,
5 name: '未登録ユーザ',
6 email: '[email protected]'
)
サービスを実行すると、データが保存されていません。調査すると…
User Exists (32.4ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY '[email protected]' LIMIT 1
↳ app/lib/make_default_data_service.rb:15
(0.5ms) ROLLBACK
「ユーザデータがすでに存在する?」とはき違えて、DBまで調査していました。
上記のソースの2行目を改修しました。
(※改修後)app/lib/make_default_data_service.rb
1 default_user = User.new
2 default_user.update_attributes!(
3 id: 1,
4 password: 1111,
5 name: '未登録ユーザ',
6 email: '[email protected]'
)
パスワードの文字数規約に反していたようですね。分かりやすくなりました。
save → save!メソッドに置き換えてもokですね。デプロイはダメなパターンですが…。
以上です。
Author And Source
この問題について(Railsでデータが登録されない。), 我々は、より多くの情報をここで見つけました https://qiita.com/dichikawa/items/c43f7615157f249d3b43著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .