kitagawachihiro / spoTodo

2 stars 0 forks source link

Todoに公開機能をつける #78

Closed kitagawachihiro closed 1 year ago

kitagawachihiro commented 1 year ago

Todoの公開ON  ・Todo作成時、Todoを公開したい場合はチェックをする  ・Todo編集画面で公開チェックも編集でき、ON/OFFできる  ・チェックした時にポップアップが上がりよかった度とコメントを入れるか確認が出る  ・(はいとした場合)よかった度(普通・満足・大満足)とコメント追加欄が表示される  ・保存→レビューテーブル(todoテーブルと1対1の関係)の公開カラム、レビューカラムに記入内容、TodoidにTodoのIDが入る、追加されたカウントカラムもある

kitagawachihiro commented 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
kitagawachihiro commented 1 year ago

①Todoテーブルに公開カラムを追加する

 rails g migration AddCcolumnTodosPublic

  def up
    add_column :todos, :public, :boolean
  end

  def down
    remove_column :todos, :public, :boolean
  end

②Todo作成、編集フォームに公開のチェックボックスを作る

③Todo作成、編集時に公開有無をコントローラーで受け取りDBへ保存する

kitagawachihiro commented 1 year ago

①ポップアップの作成

②レビューページの側の作成

③ポップアップとレビューページの紐づけ

④addcountカラムをreviewテーブルからTodoテーブルに変更する

rails g migration changeAddcountCcolumnReviewToTodos
kitagawachihiro commented 1 year ago

①reviewテーブルは同じtodoである場合は、複数作れないようにする。

②review内容はアップデートできるようにする。  (チェックしたTodoかつreviewが登録されているもののみreview編集できる。reviewが登録されていないものはあとからreview登録が可能)

kitagawachihiro commented 1 year ago
        <%= 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>
kitagawachihiro commented 1 year ago

・評価の反映について別の方法を考える OK script直書きに変更 ・Todoにレビューがネスト。ルーティングのネストをさせる。OK

kitagawachihiro commented 1 year ago

記載削除 ・manifest.js

//= require edit

・editアクション

    respond_to do |format|
      format.html
      format.js { render review_id: @review.id }
    end

https://spotodo.fly.dev

・edit.html.erb

<%= javascript_include_tag 'edit' %>