アプリの概要
Slackのようなworkspaceを実装し、メッセージのやり取りができるアプリを開発しています。
投稿メッセージのDBカラムにboolean型のResolveカラムを設けました。
(投稿内容のテキストの意味は無視してください、)
Status:Resolve
=> 非表示
Status:Unresolve
=> 表示
実装したいこと
画像にあるように、DBカラムがResolveの場合はそれを表示させ、Unresolveに変更しそれを保存させる。という機能を実装しようと思いました。
SQLiteではboolean型は "0" or "1"
UIではResolve/Unresolveとなってますが、SQLiteのBoolean型は "0"と"1"なのでブラウザ表示したいときはどのような書き方をすれば自動で変換してくれるかわかりませんでした。
Railsガイドを見ると以下の記述がありました。
*Railsガイドより引用
=>https://railsguides.jp/form_helpers.html
@person = Person.new(city: "MD")
<%= form_with model: @person do |form| %>
<%= form.select :city, [["Berlin", "BE"], ["Chicago", "CHI"], ["Madrid", "MD"]] %>
<% end %>
調べると、記述によって自動変換してくれるとのことなので、以下のように実装しました。
<%= form_with model: @post, local: true do |f| %>
<%= f.label :resolve, "Status" %>
<%= f.select :resolve, [["Unresolved", "false"], ["Resolved", "true"]], class: 'form-select' %>
<% end %>
boolean型とrailsのform_withは相性がいいらしく、rails側でfalse or trueを判別してくれるみたいです。
引用元 Ruby on Railsガイド
Railsをやり始めて4ヶ月ほど経ち、その間railsチュートリアルもやりました。
今回初めてRailsガイドを参照しましたが、こういったリファレンスも読めるようになったらいいものが作れると思うので、めげずに続けます。