ツッコミどころが3っつあります。
1つ目は
RDBを使っているのに正規化をしようと言う発想がない
仕事table 色々 started_time finished_time
休息table 色々 started_time finished_time
遊びtable 色々 started_time finished_time
を例えばpolymorphicを使って
仕事table 色々
休息table 色々
遊びtable 色々
タイムレコード started_time finished_time polymorphic_type polymorphic_id
みたいにして切り出せばタイムレコードのみを更新すればよくなります。モデルを切り替える必要はありません。
また、タイムレコードから仕事休息遊びを一覧で見ることができます。
2つ目は
stopボタンを押すと、非同期的に仕事モデルにstartを押した瞬間、endを押した瞬間の時間がそれぞれ格納される
これではブラウザを誤って閉じて閉まった場合はstartを押した瞬間のデータが消えてしまいますが
いいのでしょうか?
3つ目は
Rails5.1以降ですとこれらの処理はrailsに則って作ればturbolinksライブラリが全て非同期処理に
勝手に書き換えてくれます。
なのでajaxを気にする必要はありません。
つまりRailsに従って
0. polymorphicを使ってタイムレコードモデルを作る
0. タイムレコードコントローラーを作る
0. 仕事ボタンを押すとタイムレコードのnewに仕事パラメータを含めて誘導する
0. タイムレコードコントローラーnew methodで仕事モデルとタイムレコードモデルを生成(この時に開始時間を入れる)
0. タイムレコードのnew.html.erbをpartial化してトップ画面にrenderで埋め込む。
0. new.html.erb表示とともにカウントを始める。
0. submitボタンをstopに書き換える
0. カウントしたデータをpostパラメータの中に混ぜて、リダイレクト先をトップページにする
これで完成です。
jsでタイマーを設置する必要はありますが。
ajaxとかhtmlとかは考える必要がありません。
キーワードをググれば大体の情報は出てきます。
あと、初心者マークをつけるといいですよ
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。