kyoshida-aim / RailsTraining

Ruby on Rails研修のPR作成・進捗管理用
https://ky-railstraining-2019.herokuapp.com/
1 stars 0 forks source link

ステップ13: バリデーションを設定しよう #19

Closed kyoshida-aim closed 5 years ago

kyoshida-aim commented 5 years ago

概要

理由

確認方法

a. image image db内での操作でエラーが発生した場合に日本語表示されてない (postgresql側の仕様だろうし特に対応する必要もない?)

c. image

やっていないこと

相談事項

tasks モデルの実装時 (#4) シンプルな構成にするために名前と説明文のみのテーブルにしているので、今回実装するバリデーションも現在実装されている各カラムに対してのみ行う予定です。 今後、tasks に別のカラムを追加する際、あるいは他のテーブルを追加する際にはバリデーションごと実装しようと思います。 image

kyoshida-aim commented 5 years ago

自動テストの中身に今回の実装内容が含まれていない気がする(ローカル環境でRSpecを実行するとテストは9個流れてたような...) image 後ほど確認します

プッシュ後のテストを正しく見ていなかっただけでした。問題なしです 👍 image

kyoshida-aim commented 5 years ago

特定のバリデーション(今回ならnameのlimit)について検証してる方がいいのでは? https://railsguides.jp/active_record_validations.html#%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%A6%82%E8%A6%81-errors-details 明日出社したら↑試す

error_codes = []
task.errors.details[:name].each do |detail|
  error_codes << detail[:error]
end
expect(error_codes).to include(:too_long)

↑エラーコードを取得しようとすると結構回りくどくなりそうです。 現状でも文字列の長さがバリデーションの可否を分けていることは読み取れる形にできていると思うので、 複数のエラーが同時に発生しかねない仕様になった場合に変更する、という形で十分だと思います。 今回は変更ナシで