Closed kitagawachihiro closed 1 year ago
①reviewテーブルの作成(todosテーブルと1対1) - Rating :integer 表示は日本語だがint型。enum使わない。app/views/users/edit.html.erbを参考にする - comment :string - todo_id :integer - addcount :integer(カラムの値を+1する方法 https://teratail.com/questions/159348)
rails g model Review todo:references rating:integer comment:string addcount:integer
②モデルに関連付けを設定
class Todo < ApplicationRecord
・・・
has_one :review
class Review < ApplicationRecord
belongs_to :todo
validates :todo_id, presence: true
end
③addcountはデフォルト0にする
rails g migration change_column_default_to_review_addcount
def change
change_column_default :review, :addcount, from: nil, to: "0"
end
①Todoテーブルに公開カラムを追加する
rails g migration AddCcolumnTodosPublic
def up
add_column :todos, :public, :boolean
end
def down
remove_column :todos, :public, :boolean
end
②Todo作成、編集フォームに公開のチェックボックスを作る
③Todo作成、編集時に公開有無をコントローラーで受け取りDBへ保存する
①ポップアップの作成
②レビューページの側の作成
③ポップアップとレビューページの紐づけ
④addcountカラムをreviewテーブルからTodoテーブルに変更する
rails g migration changeAddcountCcolumnReviewToTodos
①reviewテーブルは同じtodoである場合は、複数作れないようにする。
②review内容はアップデートできるようにする。 (チェックしたTodoかつreviewが登録されているもののみreview編集できる。reviewが登録されていないものはあとからreview登録が可能)
<%= f.label :rating, t('.review'), class: 'form-label' %></br>
<div class="col-lg-10 btn-group" data-toggle="buttons">
<label class="btn btn-primary active" style="width:30%">
<%= f.radio_button :rating, 0, {checked: true} %> 普通
</label>
<label class="btn btn-primary" style="width:30%">
<%= f.radio_button :rating, 1, {} %> 満足
</label>
<label class="btn btn-primary" style="width:30%">
<%= f.radio_button :rating, 2, {} %> 大満足
</label>
</div>
・評価の反映について別の方法を考える OK script直書きに変更 ・Todoにレビューがネスト。ルーティングのネストをさせる。OK
記載削除 ・manifest.js
//= require edit
・editアクション
respond_to do |format|
format.html
format.js { render review_id: @review.id }
end
・edit.html.erb
<%= javascript_include_tag 'edit' %>
Todoの公開ON ・Todo作成時、Todoを公開したい場合はチェックをする ・Todo編集画面で公開チェックも編集でき、ON/OFFできる ・チェックした時にポップアップが上がりよかった度とコメントを入れるか確認が出る ・(はいとした場合)よかった度(普通・満足・大満足)とコメント追加欄が表示される ・保存→レビューテーブル(todoテーブルと1対1の関係)の公開カラム、レビューカラムに記入内容、TodoidにTodoのIDが入る、追加されたカウントカラムもある