kyoshida-aim / RailsTraining

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

ステップ20: 複数人で利用できるようにしよう(ユーザの導入) #30

Closed kyoshida-aim closed 5 years ago

kyoshida-aim commented 5 years ago

概要

理由

確認方法

ユーザーの追加 image

パスワードのあれこれ image

すでに作成したタスクをユーザーに紐付ける image

やっていないこと

パスワードのバリデーション(n文字以上)はログイン機能を実装する際に設定します

相談事項

User モデルのテストは特にする必要性を感じず無効化しても問題ないと思っています。

kyoshida-aim commented 5 years ago

現時点ではアプリケーション上でタスクを登録しようとするとエラーが発生する(ユーザーを取得する方法がないため) ログイン機能実装時に退避したテストを流れるように再度調整します

vividmuimui commented 5 years ago

現時点ではアプリケーション上でタスクを登録しようとするとエラーが発生する(ユーザーを取得する方法がないため) ログイン機能実装時に退避したテストを流れるように再度調整します

ブラウザ上からタスクを登録する部分は退避する、で良いと思いますが、 それ以外で、factoryでtaskを作っている部分はfactoryでuser_id埋まるようにしてあれば、テスト動いたりしないですか?

kyoshida-aim commented 5 years ago

データベースを新規作成する場合にはmigrationは問題なく動作するのですが、すでにタスクが存在している状態でuser_id を追加するマイグレーションを実行しようとしてもエラーが発生するようです。 migrationファイルの中で既存のタスクにユーザーを紐づけるようにします

vividmuimui commented 5 years ago

あれ。。エラーになるのかー。。 どういうエラがーでてるんですか?

kyoshida-aim commented 5 years ago
NP0326-kyoshida:RailsTraining kyoshida$ bin/rails db:migrate
== 20190710091902 AddUseridToTask: migrating ==================================
-- add_reference(:tasks, :user, {:null=>false, :index=>true})
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::NotNullViolation: ERROR:  column "user_id" contains null values
: ALTER TABLE "tasks" ADD "user_id" bigint NOT NULL
/Users/kyoshida/Desktop/training/RailsTraining/db/migrate/20190710091902_add_userid_to_task.rb:3:in `change'
/Users/kyoshida/Desktop/training/RailsTraining/bin/rails:9:in `<top (required)>'
/Users/kyoshida/Desktop/training/RailsTraining/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'

Caused by:
ActiveRecord::NotNullViolation: PG::NotNullViolation: ERROR:  column "user_id" contains null values
: ALTER TABLE "tasks" ADD "user_id" bigint NOT NULL
/Users/kyoshida/Desktop/training/RailsTraining/db/migrate/20190710091902_add_userid_to_task.rb:3:in `change'
/Users/kyoshida/Desktop/training/RailsTraining/bin/rails:9:in `<top (required)>'
/Users/kyoshida/Desktop/training/RailsTraining/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'

Caused by:
PG::NotNullViolation: ERROR:  column "user_id" contains null values
/Users/kyoshida/Desktop/training/RailsTraining/db/migrate/20190710091902_add_userid_to_task.rb:3:in `change'
/Users/kyoshida/Desktop/training/RailsTraining/bin/rails:9:in `<top (required)>'
/Users/kyoshida/Desktop/training/RailsTraining/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
kyoshida-aim commented 5 years ago

Null制約を消すとmigration実行できるので、既存のタスクがNull制約に引っかかるようなmigrationは弾かれるようです。 default値が設定されていないから、というのもあるかも

vividmuimui commented 5 years ago

なるほどー

vividmuimui commented 5 years ago

https://github.com/kyoshida-aim/RailsTraining/pull/30/commits/cebabf2c38a87ff578c3326f90f05810292b09ba このコミットは、あとでrebaseするぞって自分へのメッセージのコミットでは・・・?

kyoshida-aim commented 5 years ago

cebabf2 このコミットは、あとでrebaseするぞって自分へのメッセージのコミットでは・・・?

[05dc64e]こっちのコミットをgithubにpushした後に修正したくなったのでrebaseのタグをつけてマージ前にrebaseしようと思ってました。 修正してpushし直します。

kyoshida-aim commented 5 years ago

コミット整理してpush-fし直したらマージします。 最終的なコード自体には変化はありません。